@mountainpass/problem-document 0.0.2 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1,10 +1,54 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ProblemDocument = void 0;
4
+ /**
5
+ *
6
+ * This class implements RFC7807 "problem detail", a way to carry machine-
7
+ * readable details of errors in a HTTP response to avoid the need to
8
+ * define new error response formats for HTTP APIs.
9
+ *
10
+ * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7807
11
+ *
12
+ * Consumers MUST use the "type" string as the primary identifier for
13
+ * the problem type; the "title" string is advisory and included only
14
+ * for users who are not aware of the semantics of the URI and do not
15
+ * have the ability to discover them (e.g., offline log analysis).
16
+ * Consumers SHOULD NOT automatically dereference the type URI.
17
+ *
18
+ * The "status" member, if present, is only advisory; it conveys the
19
+ * HTTP status code used for the convenience of the consumer.
20
+ * Generators MUST use the same status code in the actual HTTP response,
21
+ * to assure that generic HTTP software that does not understand this
22
+ * format still behaves correctly. See Section 5 for further caveats
23
+ * regarding its use.
24
+ *
25
+ * Consumers can use the status member to determine what the original
26
+ * status code used by the generator was, in cases where it has been
27
+ * changed (e.g., by an intermediary or cache), and when message bodies
28
+ * persist without HTTP information. Generic HTTP software will still
29
+ * use the HTTP status code.
30
+ *
31
+ * The "detail" member, if present, ought to focus on helping the client
32
+ * correct the problem, rather than giving debugging information.
33
+ *
34
+ * Consumers SHOULD NOT parse the "detail" member for information;
35
+ * extensions are more suitable and less error-prone ways to obtain such
36
+ * information.
37
+ *
38
+ * Note that both {@link BaseProblemDocumentProperties.type type} and {@link BaseProblemDocumentProperties.instance instance} accept relative URIs; this means
39
+ * that they must be resolved relative to the document's base URI, as
40
+ * per {@link https://datatracker.ietf.org/doc/html/rfc3986#section-5 [RFC3986], Section 5}.
41
+ */
4
42
  class ProblemDocument {
43
+ /**
44
+ *
45
+ * construct a new ProblemDocument instance
46
+ *
47
+ * @param data properties to assign to the new instance
48
+ */
5
49
  constructor(data) {
6
50
  Object.assign(this, data);
7
51
  }
8
52
  }
9
53
  exports.ProblemDocument = ProblemDocument;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBcVdBLE1BQWEsZUFBZTtJQU8xQixZQUFZLElBQTZCO1FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRjtBQVZELDBDQVVDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmV0dHltdWNoYnJ5Y2UvaHR0cC1zdGF0dXMtY29kZXMvYmxvYi9tYXN0ZXIvc3JjL3N0YXR1cy1jb2Rlcy50cyB1bmRlciBNSVQgTGljZW5zZVxuLy8gSWYgeW91IGtub3cgaG93IHRvIGNvbnZlcnQgbnVtZXJpYyBlbnVtIHZhbHVlcyB0byBhIHVuaW9uIHR5cGUsIHBsZWFzZSBzdWJtaXQgYSBQUi5cbnR5cGUgU3RhdHVzQ29kZSA9XG4vKiogQUNDRVBURURcbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi4zLjNcbipcbiogVGhlIHJlcXVlc3QgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IG5vdCB5ZXQgYWN0ZWQgdXBvbi4gSXQgaXMgbm9uLWNvbW1pdHRhbCwgbWVhbmluZyB0aGF0IHRoZXJlIGlzIG5vIHdheSBpbiBIVFRQIHRvIGxhdGVyIHNlbmQgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlIGluZGljYXRpbmcgdGhlIG91dGNvbWUgb2YgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC4gSXQgaXMgaW50ZW5kZWQgZm9yIGNhc2VzIHdoZXJlIGFub3RoZXIgcHJvY2VzcyBvciBzZXJ2ZXIgaGFuZGxlcyB0aGUgcmVxdWVzdCwgb3IgZm9yIGJhdGNoIHByb2Nlc3NpbmcuXG4qL1xuMjAyIHxcbi8qKiBCQURfR0FURVdBWVxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjYuM1xuKlxuKiBUaGlzIGVycm9yIHJlc3BvbnNlIG1lYW5zIHRoYXQgdGhlIHNlcnZlciwgd2hpbGUgd29ya2luZyBhcyBhIGdhdGV3YXkgdG8gZ2V0IGEgcmVzcG9uc2UgbmVlZGVkIHRvIGhhbmRsZSB0aGUgcmVxdWVzdCwgZ290IGFuIGludmFsaWQgcmVzcG9uc2UuXG4qL1xuNTAyIHxcbi8qKiBCQURfUkVRVUVTVFxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuMVxuKlxuKiBUaGlzIHJlc3BvbnNlIG1lYW5zIHRoYXQgc2VydmVyIGNvdWxkIG5vdCB1bmRlcnN0YW5kIHRoZSByZXF1ZXN0IGR1ZSB0byBpbnZhbGlkIHN5bnRheC5cbiovXG40MDAgfFxuLyoqIENPTkZMSUNUXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS44XG4qXG4qIFRoaXMgcmVzcG9uc2UgaXMgc2VudCB3aGVuIGEgcmVxdWVzdCBjb25mbGljdHMgd2l0aCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc2VydmVyLlxuKi9cbjQwOSB8XG4vKiogQ09OVElOVUVcbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi4yLjFcbipcbiogVGhpcyBpbnRlcmltIHJlc3BvbnNlIGluZGljYXRlcyB0aGF0IGV2ZXJ5dGhpbmcgc28gZmFyIGlzIE9LIGFuZCB0aGF0IHRoZSBjbGllbnQgc2hvdWxkIGNvbnRpbnVlIHdpdGggdGhlIHJlcXVlc3Qgb3IgaWdub3JlIGl0IGlmIGl0IGlzIGFscmVhZHkgZmluaXNoZWQuXG4qL1xuMTAwIHxcbi8qKiBDUkVBVEVEXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy4yXG4qXG4qIFRoZSByZXF1ZXN0IGhhcyBzdWNjZWVkZWQgYW5kIGEgbmV3IHJlc291cmNlIGhhcyBiZWVuIGNyZWF0ZWQgYXMgYSByZXN1bHQgb2YgaXQuIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSByZXNwb25zZSBzZW50IGFmdGVyIGEgUFVUIHJlcXVlc3QuXG4qL1xuMjAxIHxcbi8qKiBFWFBFQ1RBVElPTl9GQUlMRURcbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjE0XG4qXG4qIFRoaXMgcmVzcG9uc2UgY29kZSBtZWFucyB0aGUgZXhwZWN0YXRpb24gaW5kaWNhdGVkIGJ5IHRoZSBFeHBlY3QgcmVxdWVzdCBoZWFkZXIgZmllbGQgY2FuJ3QgYmUgbWV0IGJ5IHRoZSBzZXJ2ZXIuXG4qL1xuNDE3IHxcbi8qKiBGQUlMRURfREVQRU5ERU5DWVxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC41XG4qXG4qIFRoZSByZXF1ZXN0IGZhaWxlZCBkdWUgdG8gZmFpbHVyZSBvZiBhIHByZXZpb3VzIHJlcXVlc3QuXG4qL1xuNDI0IHxcbi8qKiBGT1JCSURERU5cbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjNcbipcbiogVGhlIGNsaWVudCBkb2VzIG5vdCBoYXZlIGFjY2VzcyByaWdodHMgdG8gdGhlIGNvbnRlbnQsIGkuZS4gdGhleSBhcmUgdW5hdXRob3JpemVkLCBzbyBzZXJ2ZXIgaXMgcmVqZWN0aW5nIHRvIGdpdmUgcHJvcGVyIHJlc3BvbnNlLiBVbmxpa2UgNDAxLCB0aGUgY2xpZW50J3MgaWRlbnRpdHkgaXMga25vd24gdG8gdGhlIHNlcnZlci5cbiovXG40MDMgfFxuLyoqIEdBVEVXQVlfVElNRU9VVFxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjYuNVxuKlxuKiBUaGlzIGVycm9yIHJlc3BvbnNlIGlzIGdpdmVuIHdoZW4gdGhlIHNlcnZlciBpcyBhY3RpbmcgYXMgYSBnYXRld2F5IGFuZCBjYW5ub3QgZ2V0IGEgcmVzcG9uc2UgaW4gdGltZS5cbiovXG41MDQgfFxuLyoqIEdPTkVcbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjlcbipcbiogVGhpcyByZXNwb25zZSB3b3VsZCBiZSBzZW50IHdoZW4gdGhlIHJlcXVlc3RlZCBjb250ZW50IGhhcyBiZWVuIHBlcm1hbmVudGx5IGRlbGV0ZWQgZnJvbSBzZXJ2ZXIsIHdpdGggbm8gZm9yd2FyZGluZyBhZGRyZXNzLiBDbGllbnRzIGFyZSBleHBlY3RlZCB0byByZW1vdmUgdGhlaXIgY2FjaGVzIGFuZCBsaW5rcyB0byB0aGUgcmVzb3VyY2UuIFRoZSBIVFRQIHNwZWNpZmljYXRpb24gaW50ZW5kcyB0aGlzIHN0YXR1cyBjb2RlIHRvIGJlIHVzZWQgZm9yIFwibGltaXRlZC10aW1lLCBwcm9tb3Rpb25hbCBzZXJ2aWNlc1wiLiBBUElzIHNob3VsZCBub3QgZmVlbCBjb21wZWxsZWQgdG8gaW5kaWNhdGUgcmVzb3VyY2VzIHRoYXQgaGF2ZSBiZWVuIGRlbGV0ZWQgd2l0aCB0aGlzIHN0YXR1cyBjb2RlLlxuKi9cbjQxMCB8XG4vKiogSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURURcbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjZcbipcbiogVGhlIEhUVFAgdmVyc2lvbiB1c2VkIGluIHRoZSByZXF1ZXN0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlci5cbiovXG41MDUgfFxuLyoqIElNX0FfVEVBUE9UXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjMyNCNzZWN0aW9uLTIuMy4yXG4qXG4qIEFueSBhdHRlbXB0IHRvIGJyZXcgY29mZmVlIHdpdGggYSB0ZWFwb3Qgc2hvdWxkIHJlc3VsdCBpbiB0aGUgZXJyb3IgY29kZSBcIjQxOCBJJ20gYSB0ZWFwb3RcIi4gVGhlIHJlc3VsdGluZyBlbnRpdHkgYm9keSBNQVkgYmUgc2hvcnQgYW5kIHN0b3V0LlxuKi9cbjQxOCB8XG4vKiogSU5TVUZGSUNJRU5UX1NQQUNFX09OX1JFU09VUkNFXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjUxOCNzZWN0aW9uLTEwLjZcbipcbiogVGhlIDUwNyAoSW5zdWZmaWNpZW50IFN0b3JhZ2UpIHN0YXR1cyBjb2RlIG1lYW5zIHRoZSBtZXRob2QgY291bGQgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGUgcmVzb3VyY2UgYmVjYXVzZSB0aGUgc2VydmVyIGlzIHVuYWJsZSB0byBzdG9yZSB0aGUgcmVwcmVzZW50YXRpb24gbmVlZGVkIHRvIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSB0aGUgcmVxdWVzdC4gVGhpcyBjb25kaXRpb24gaXMgY29uc2lkZXJlZCB0byBiZSB0ZW1wb3JhcnkuIElmIHRoZSByZXF1ZXN0IHdoaWNoIHJlY2VpdmVkIHRoaXMgc3RhdHVzIGNvZGUgd2FzIHRoZSByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbiwgdGhlIHJlcXVlc3QgTVVTVCBOT1QgYmUgcmVwZWF0ZWQgdW50aWwgaXQgaXMgcmVxdWVzdGVkIGJ5IGEgc2VwYXJhdGUgdXNlciBhY3Rpb24uXG4qL1xuNDE5IHxcbi8qKiBJTlNVRkZJQ0lFTlRfU1RPUkFHRVxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC42XG4qXG4qIFRoZSBzZXJ2ZXIgaGFzIGFuIGludGVybmFsIGNvbmZpZ3VyYXRpb24gZXJyb3I6IHRoZSBjaG9zZW4gdmFyaWFudCByZXNvdXJjZSBpcyBjb25maWd1cmVkIHRvIGVuZ2FnZSBpbiB0cmFuc3BhcmVudCBjb250ZW50IG5lZ290aWF0aW9uIGl0c2VsZiwgYW5kIGlzIHRoZXJlZm9yZSBub3QgYSBwcm9wZXIgZW5kIHBvaW50IGluIHRoZSBuZWdvdGlhdGlvbiBwcm9jZXNzLlxuKi9cbjUwNyB8XG4vKiogSU5URVJOQUxfU0VSVkVSX0VSUk9SXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNi4xXG4qXG4qIFRoZSBzZXJ2ZXIgZW5jb3VudGVyZWQgYW4gdW5leHBlY3RlZCBjb25kaXRpb24gdGhhdCBwcmV2ZW50ZWQgaXQgZnJvbSBmdWxmaWxsaW5nIHRoZSByZXF1ZXN0LlxuKi9cbjUwMCB8XG4vKiogTEVOR1RIX1JFUVVJUkVEXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xMFxuKlxuKiBUaGUgc2VydmVyIHJlamVjdGVkIHRoZSByZXF1ZXN0IGJlY2F1c2UgdGhlIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBmaWVsZCBpcyBub3QgZGVmaW5lZCBhbmQgdGhlIHNlcnZlciByZXF1aXJlcyBpdC5cbiovXG40MTEgfFxuLyoqIExPQ0tFRFxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC40XG4qXG4qIFRoZSByZXNvdXJjZSB0aGF0IGlzIGJlaW5nIGFjY2Vzc2VkIGlzIGxvY2tlZC5cbiovXG40MjMgfFxuLyoqIE1FVEhPRF9GQUlMVVJFXG4qIEBkZXByZWNhdGVkXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL3JmY2RpZmY/ZGlmZnR5cGU9LS1od2RpZmYmdXJsMj1kcmFmdC1pZXRmLXdlYmRhdi1wcm90b2NvbC0wNi50eHRcbipcbiogQSBkZXByZWNhdGVkIHJlc3BvbnNlIHVzZWQgYnkgdGhlIFNwcmluZyBGcmFtZXdvcmsgd2hlbiBhIG1ldGhvZCBoYXMgZmFpbGVkLlxuKi9cbjQyMCB8XG4vKiogTUVUSE9EX05PVF9BTExPV0VEXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS41XG4qXG4qIFRoZSByZXF1ZXN0IG1ldGhvZCBpcyBrbm93biBieSB0aGUgc2VydmVyIGJ1dCBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgY2Fubm90IGJlIHVzZWQuIEZvciBleGFtcGxlLCBhbiBBUEkgbWF5IGZvcmJpZCBERUxFVEUtaW5nIGEgcmVzb3VyY2UuIFRoZSB0d28gbWFuZGF0b3J5IG1ldGhvZHMsIEdFVCBhbmQgSEVBRCwgbXVzdCBuZXZlciBiZSBkaXNhYmxlZCBhbmQgc2hvdWxkIG5vdCByZXR1cm4gdGhpcyBlcnJvciBjb2RlLlxuKi9cbjQwNSB8XG4vKiogTU9WRURfUEVSTUFORU5UTFlcbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjJcbipcbiogVGhpcyByZXNwb25zZSBjb2RlIG1lYW5zIHRoYXQgVVJJIG9mIHJlcXVlc3RlZCByZXNvdXJjZSBoYXMgYmVlbiBjaGFuZ2VkLiBQcm9iYWJseSwgbmV3IFVSSSB3b3VsZCBiZSBnaXZlbiBpbiB0aGUgcmVzcG9uc2UuXG4qL1xuMzAxIHxcbi8qKiBNT1ZFRF9URU1QT1JBUklMWVxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjQuM1xuKlxuKiBUaGlzIHJlc3BvbnNlIGNvZGUgbWVhbnMgdGhhdCBVUkkgb2YgcmVxdWVzdGVkIHJlc291cmNlIGhhcyBiZWVuIGNoYW5nZWQgdGVtcG9yYXJpbHkuIE5ldyBjaGFuZ2VzIGluIHRoZSBVUkkgbWlnaHQgYmUgbWFkZSBpbiB0aGUgZnV0dXJlLiBUaGVyZWZvcmUsIHRoaXMgc2FtZSBVUkkgc2hvdWxkIGJlIHVzZWQgYnkgdGhlIGNsaWVudCBpbiBmdXR1cmUgcmVxdWVzdHMuXG4qL1xuMzAyIHxcbi8qKiBNVUxUSV9TVEFUVVNcbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTE4I3NlY3Rpb24tMTAuMlxuKlxuKiBBIE11bHRpLVN0YXR1cyByZXNwb25zZSBjb252ZXlzIGluZm9ybWF0aW9uIGFib3V0IG11bHRpcGxlIHJlc291cmNlcyBpbiBzaXR1YXRpb25zIHdoZXJlIG11bHRpcGxlIHN0YXR1cyBjb2RlcyBtaWdodCBiZSBhcHByb3ByaWF0ZS5cbiovXG4yMDcgfFxuLyoqIE1VTFRJUExFX0NIT0lDRVNcbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjFcbipcbiogVGhlIHJlcXVlc3QgaGFzIG1vcmUgdGhhbiBvbmUgcG9zc2libGUgcmVzcG9uc2VzLiBVc2VyLWFnZW50IG9yIHVzZXIgc2hvdWxkIGNob29zZSBvbmUgb2YgdGhlbS4gVGhlcmUgaXMgbm8gc3RhbmRhcmRpemVkIHdheSB0byBjaG9vc2Ugb25lIG9mIHRoZSByZXNwb25zZXMuXG4qL1xuMzAwIHxcbi8qKiBORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjU4NSNzZWN0aW9uLTZcbipcbiogVGhlIDUxMSBzdGF0dXMgY29kZSBpbmRpY2F0ZXMgdGhhdCB0aGUgY2xpZW50IG5lZWRzIHRvIGF1dGhlbnRpY2F0ZSB0byBnYWluIG5ldHdvcmsgYWNjZXNzLlxuKi9cbjUxMSB8XG4vKiogTk9fQ09OVEVOVFxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjMuNVxuKlxuKiBUaGVyZSBpcyBubyBjb250ZW50IHRvIHNlbmQgZm9yIHRoaXMgcmVxdWVzdCwgYnV0IHRoZSBoZWFkZXJzIG1heSBiZSB1c2VmdWwuIFRoZSB1c2VyLWFnZW50IG1heSB1cGRhdGUgaXRzIGNhY2hlZCBoZWFkZXJzIGZvciB0aGlzIHJlc291cmNlIHdpdGggdGhlIG5ldyBvbmVzLlxuKi9cbjIwNCB8XG4vKiogTk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT05cbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi4zLjRcbipcbiogVGhpcyByZXNwb25zZSBjb2RlIG1lYW5zIHJldHVybmVkIG1ldGEtaW5mb3JtYXRpb24gc2V0IGlzIG5vdCBleGFjdCBzZXQgYXMgYXZhaWxhYmxlIGZyb20gdGhlIG9yaWdpbiBzZXJ2ZXIsIGJ1dCBjb2xsZWN0ZWQgZnJvbSBhIGxvY2FsIG9yIGEgdGhpcmQgcGFydHkgY29weS4gRXhjZXB0IHRoaXMgY29uZGl0aW9uLCAyMDAgT0sgcmVzcG9uc2Ugc2hvdWxkIGJlIHByZWZlcnJlZCBpbnN0ZWFkIG9mIHRoaXMgcmVzcG9uc2UuXG4qL1xuMjAzIHxcbi8qKiBOT1RfQUNDRVBUQUJMRVxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuNlxuKlxuKiBUaGlzIHJlc3BvbnNlIGlzIHNlbnQgd2hlbiB0aGUgd2ViIHNlcnZlciwgYWZ0ZXIgcGVyZm9ybWluZyBzZXJ2ZXItZHJpdmVuIGNvbnRlbnQgbmVnb3RpYXRpb24sIGRvZXNuJ3QgZmluZCBhbnkgY29udGVudCBmb2xsb3dpbmcgdGhlIGNyaXRlcmlhIGdpdmVuIGJ5IHRoZSB1c2VyIGFnZW50LlxuKi9cbjQwNiB8XG4vKiogTk9UX0ZPVU5EXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS40XG4qXG4qIFRoZSBzZXJ2ZXIgY2FuIG5vdCBmaW5kIHJlcXVlc3RlZCByZXNvdXJjZS4gSW4gdGhlIGJyb3dzZXIsIHRoaXMgbWVhbnMgdGhlIFVSTCBpcyBub3QgcmVjb2duaXplZC4gSW4gYW4gQVBJLCB0aGlzIGNhbiBhbHNvIG1lYW4gdGhhdCB0aGUgZW5kcG9pbnQgaXMgdmFsaWQgYnV0IHRoZSByZXNvdXJjZSBpdHNlbGYgZG9lcyBub3QgZXhpc3QuIFNlcnZlcnMgbWF5IGFsc28gc2VuZCB0aGlzIHJlc3BvbnNlIGluc3RlYWQgb2YgNDAzIHRvIGhpZGUgdGhlIGV4aXN0ZW5jZSBvZiBhIHJlc291cmNlIGZyb20gYW4gdW5hdXRob3JpemVkIGNsaWVudC4gVGhpcyByZXNwb25zZSBjb2RlIGlzIHByb2JhYmx5IHRoZSBtb3N0IGZhbW91cyBvbmUgZHVlIHRvIGl0cyBmcmVxdWVudCBvY2N1cnJlbmNlIG9uIHRoZSB3ZWIuXG4qL1xuNDA0IHxcbi8qKiBOT1RfSU1QTEVNRU5URURcbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjJcbipcbiogVGhlIHJlcXVlc3QgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlciBhbmQgY2Fubm90IGJlIGhhbmRsZWQuIFRoZSBvbmx5IG1ldGhvZHMgdGhhdCBzZXJ2ZXJzIGFyZSByZXF1aXJlZCB0byBzdXBwb3J0IChhbmQgdGhlcmVmb3JlIHRoYXQgbXVzdCBub3QgcmV0dXJuIHRoaXMgY29kZSkgYXJlIEdFVCBhbmQgSEVBRC5cbiovXG41MDEgfFxuLyoqIE5PVF9NT0RJRklFRFxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzIjc2VjdGlvbi00LjFcbipcbiogVGhpcyBpcyB1c2VkIGZvciBjYWNoaW5nIHB1cnBvc2VzLiBJdCBpcyB0ZWxsaW5nIHRvIGNsaWVudCB0aGF0IHJlc3BvbnNlIGhhcyBub3QgYmVlbiBtb2RpZmllZC4gU28sIGNsaWVudCBjYW4gY29udGludWUgdG8gdXNlIHNhbWUgY2FjaGVkIHZlcnNpb24gb2YgcmVzcG9uc2UuXG4qL1xuMzA0IHxcbi8qKiBPS1xuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjMuMVxuKlxuKiBUaGUgcmVxdWVzdCBoYXMgc3VjY2VlZGVkLiBUaGUgbWVhbmluZyBvZiBhIHN1Y2Nlc3MgdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUgSFRUUCBtZXRob2Q6XG4qIEdFVDogVGhlIHJlc291cmNlIGhhcyBiZWVuIGZldGNoZWQgYW5kIGlzIHRyYW5zbWl0dGVkIGluIHRoZSBtZXNzYWdlIGJvZHkuXG4qIEhFQUQ6IFRoZSBlbnRpdHkgaGVhZGVycyBhcmUgaW4gdGhlIG1lc3NhZ2UgYm9keS5cbiogUE9TVDogVGhlIHJlc291cmNlIGRlc2NyaWJpbmcgdGhlIHJlc3VsdCBvZiB0aGUgYWN0aW9uIGlzIHRyYW5zbWl0dGVkIGluIHRoZSBtZXNzYWdlIGJvZHkuXG4qIFRSQUNFOiBUaGUgbWVzc2FnZSBib2R5IGNvbnRhaW5zIHRoZSByZXF1ZXN0IG1lc3NhZ2UgYXMgcmVjZWl2ZWQgYnkgdGhlIHNlcnZlclxuKi9cbjIwMCB8XG4vKiogUEFSVElBTF9DT05URU5UXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMyNzZWN0aW9uLTQuMVxuKlxuKiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgdXNlZCBiZWNhdXNlIG9mIHJhbmdlIGhlYWRlciBzZW50IGJ5IHRoZSBjbGllbnQgdG8gc2VwYXJhdGUgZG93bmxvYWQgaW50byBtdWx0aXBsZSBzdHJlYW1zLlxuKi9cbjIwNiB8XG4vKiogUEFZTUVOVF9SRVFVSVJFRFxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuMlxuKlxuKiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuIEluaXRpYWwgYWltIGZvciBjcmVhdGluZyB0aGlzIGNvZGUgd2FzIHVzaW5nIGl0IGZvciBkaWdpdGFsIHBheW1lbnQgc3lzdGVtcyBob3dldmVyIHRoaXMgaXMgbm90IHVzZWQgY3VycmVudGx5LlxuKi9cbjQwMiB8XG4vKiogUEVSTUFORU5UX1JFRElSRUNUXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzUzOCNzZWN0aW9uLTNcbipcbiogVGhpcyBtZWFucyB0aGF0IHRoZSByZXNvdXJjZSBpcyBub3cgcGVybWFuZW50bHkgbG9jYXRlZCBhdCBhbm90aGVyIFVSSSwgc3BlY2lmaWVkIGJ5IHRoZSBMb2NhdGlvbjogSFRUUCBSZXNwb25zZSBoZWFkZXIuIFRoaXMgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgMzAxIE1vdmVkIFBlcm1hbmVudGx5IEhUVFAgcmVzcG9uc2UgY29kZSwgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgdGhlIHVzZXIgYWdlbnQgbXVzdCBub3QgY2hhbmdlIHRoZSBIVFRQIG1ldGhvZCB1c2VkOiBpZiBhIFBPU1Qgd2FzIHVzZWQgaW4gdGhlIGZpcnN0IHJlcXVlc3QsIGEgUE9TVCBtdXN0IGJlIHVzZWQgaW4gdGhlIHNlY29uZCByZXF1ZXN0LlxuKi9cbjMwOCB8XG4vKiogUFJFQ09ORElUSU9OX0ZBSUxFRFxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzIjc2VjdGlvbi00LjJcbipcbiogVGhlIGNsaWVudCBoYXMgaW5kaWNhdGVkIHByZWNvbmRpdGlvbnMgaW4gaXRzIGhlYWRlcnMgd2hpY2ggdGhlIHNlcnZlciBkb2VzIG5vdCBtZWV0LlxuKi9cbjQxMiB8XG4vKiogUFJFQ09ORElUSU9OX1JFUVVJUkVEXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjU4NSNzZWN0aW9uLTNcbipcbiogVGhlIG9yaWdpbiBzZXJ2ZXIgcmVxdWlyZXMgdGhlIHJlcXVlc3QgdG8gYmUgY29uZGl0aW9uYWwuIEludGVuZGVkIHRvIHByZXZlbnQgdGhlICdsb3N0IHVwZGF0ZScgcHJvYmxlbSwgd2hlcmUgYSBjbGllbnQgR0VUcyBhIHJlc291cmNlJ3Mgc3RhdGUsIG1vZGlmaWVzIGl0LCBhbmQgUFVUcyBpdCBiYWNrIHRvIHRoZSBzZXJ2ZXIsIHdoZW4gbWVhbndoaWxlIGEgdGhpcmQgcGFydHkgaGFzIG1vZGlmaWVkIHRoZSBzdGF0ZSBvbiB0aGUgc2VydmVyLCBsZWFkaW5nIHRvIGEgY29uZmxpY3QuXG4qL1xuNDI4IHxcbi8qKiBQUk9DRVNTSU5HXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjUxOCNzZWN0aW9uLTEwLjFcbipcbiogVGhpcyBjb2RlIGluZGljYXRlcyB0aGF0IHRoZSBzZXJ2ZXIgaGFzIHJlY2VpdmVkIGFuZCBpcyBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0LCBidXQgbm8gcmVzcG9uc2UgaXMgYXZhaWxhYmxlIHlldC5cbiovXG4xMDIgfFxuLyoqIFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNSNzZWN0aW9uLTMuMlxuKlxuKiBUaGlzIGlzIHNpbWlsYXIgdG8gNDAxIGJ1dCBhdXRoZW50aWNhdGlvbiBpcyBuZWVkZWQgdG8gYmUgZG9uZSBieSBhIHByb3h5LlxuKi9cbjQwNyB8XG4vKiogUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRVxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY1ODUjc2VjdGlvbi01XG4qXG4qIFRoZSBzZXJ2ZXIgaXMgdW53aWxsaW5nIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QgYmVjYXVzZSBpdHMgaGVhZGVyIGZpZWxkcyBhcmUgdG9vIGxhcmdlLiBUaGUgcmVxdWVzdCBNQVkgYmUgcmVzdWJtaXR0ZWQgYWZ0ZXIgcmVkdWNpbmcgdGhlIHNpemUgb2YgdGhlIHJlcXVlc3QgaGVhZGVyIGZpZWxkcy5cbiovXG40MzEgfFxuLyoqIFJFUVVFU1RfVElNRU9VVFxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuN1xuKlxuKiBUaGlzIHJlc3BvbnNlIGlzIHNlbnQgb24gYW4gaWRsZSBjb25uZWN0aW9uIGJ5IHNvbWUgc2VydmVycywgZXZlbiB3aXRob3V0IGFueSBwcmV2aW91cyByZXF1ZXN0IGJ5IHRoZSBjbGllbnQuIEl0IG1lYW5zIHRoYXQgdGhlIHNlcnZlciB3b3VsZCBsaWtlIHRvIHNodXQgZG93biB0aGlzIHVudXNlZCBjb25uZWN0aW9uLiBUaGlzIHJlc3BvbnNlIGlzIHVzZWQgbXVjaCBtb3JlIHNpbmNlIHNvbWUgYnJvd3NlcnMsIGxpa2UgQ2hyb21lLCBGaXJlZm94IDI3Kywgb3IgSUU5LCB1c2UgSFRUUCBwcmUtY29ubmVjdGlvbiBtZWNoYW5pc21zIHRvIHNwZWVkIHVwIHN1cmZpbmcuIEFsc28gbm90ZSB0aGF0IHNvbWUgc2VydmVycyBtZXJlbHkgc2h1dCBkb3duIHRoZSBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyB0aGlzIG1lc3NhZ2UuXG4qL1xuNDA4IHxcbi8qKiBSRVFVRVNUX1RPT19MT05HXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xMVxuKlxuKiBSZXF1ZXN0IGVudGl0eSBpcyBsYXJnZXIgdGhhbiBsaW1pdHMgZGVmaW5lZCBieSBzZXJ2ZXI7IHRoZSBzZXJ2ZXIgbWlnaHQgY2xvc2UgdGhlIGNvbm5lY3Rpb24gb3IgcmV0dXJuIGFuIFJldHJ5LUFmdGVyIGhlYWRlciBmaWVsZC5cbiovXG40MTMgfFxuLyoqIFJFUVVFU1RfVVJJX1RPT19MT05HXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xMlxuKlxuKiBUaGUgVVJJIHJlcXVlc3RlZCBieSB0aGUgY2xpZW50IGlzIGxvbmdlciB0aGFuIHRoZSBzZXJ2ZXIgaXMgd2lsbGluZyB0byBpbnRlcnByZXQuXG4qL1xuNDE0IHxcbi8qKiBSRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMyNzZWN0aW9uLTQuNFxuKlxuKiBUaGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5IHRoZSBSYW5nZSBoZWFkZXIgZmllbGQgaW4gdGhlIHJlcXVlc3QgY2FuJ3QgYmUgZnVsZmlsbGVkOyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHJhbmdlIGlzIG91dHNpZGUgdGhlIHNpemUgb2YgdGhlIHRhcmdldCBVUkkncyBkYXRhLlxuKi9cbjQxNiB8XG4vKiogUkVTRVRfQ09OVEVOVFxuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjMuNlxuKlxuKiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgc2VudCBhZnRlciBhY2NvbXBsaXNoaW5nIHJlcXVlc3QgdG8gdGVsbCB1c2VyIGFnZW50IHJlc2V0IGRvY3VtZW50IHZpZXcgd2hpY2ggc2VudCB0aGlzIHJlcXVlc3QuXG4qL1xuMjA1IHxcbi8qKiBTRUVfT1RIRVJcbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjRcbipcbiogU2VydmVyIHNlbnQgdGhpcyByZXNwb25zZSB0byBkaXJlY3RpbmcgY2xpZW50IHRvIGdldCByZXF1ZXN0ZWQgcmVzb3VyY2UgdG8gYW5vdGhlciBVUkkgd2l0aCBhbiBHRVQgcmVxdWVzdC5cbiovXG4zMDMgfFxuLyoqIFNFUlZJQ0VfVU5BVkFJTEFCTEVcbiogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjRcbipcbiogVGhlIHNlcnZlciBpcyBub3QgcmVhZHkgdG8gaGFuZGxlIHRoZSByZXF1ZXN0LiBDb21tb24gY2F1c2VzIGFyZSBhIHNlcnZlciB0aGF0IGlzIGRvd24gZm9yIG1haW50ZW5hbmNlIG9yIHRoYXQgaXMgb3ZlcmxvYWRlZC4gTm90ZSB0aGF0IHRvZ2V0aGVyIHdpdGggdGhpcyByZXNwb25zZSwgYSB1c2VyLWZyaWVuZGx5IHBhZ2UgZXhwbGFpbmluZyB0aGUgcHJvYmxlbSBzaG91bGQgYmUgc2VudC4gVGhpcyByZXNwb25zZXMgc2hvdWxkIGJlIHVzZWQgZm9yIHRlbXBvcmFyeSBjb25kaXRpb25zIGFuZCB0aGUgUmV0cnktQWZ0ZXI6IEhUVFAgaGVhZGVyIHNob3VsZCwgaWYgcG9zc2libGUsIGNvbnRhaW4gdGhlIGVzdGltYXRlZCB0aW1lIGJlZm9yZSB0aGUgcmVjb3Zlcnkgb2YgdGhlIHNlcnZpY2UuIFRoZSB3ZWJtYXN0ZXIgbXVzdCBhbHNvIHRha2UgY2FyZSBhYm91dCB0aGUgY2FjaGluZy1yZWxhdGVkIGhlYWRlcnMgdGhhdCBhcmUgc2VudCBhbG9uZyB3aXRoIHRoaXMgcmVzcG9uc2UsIGFzIHRoZXNlIHRlbXBvcmFyeSBjb25kaXRpb24gcmVzcG9uc2VzIHNob3VsZCB1c3VhbGx5IG5vdCBiZSBjYWNoZWQuXG4qL1xuNTAzIHxcbi8qKiBTV0lUQ0hJTkdfUFJPVE9DT0xTXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMi4yXG4qXG4qIFRoaXMgY29kZSBpcyBzZW50IGluIHJlc3BvbnNlIHRvIGFuIFVwZ3JhZGUgcmVxdWVzdCBoZWFkZXIgYnkgdGhlIGNsaWVudCwgYW5kIGluZGljYXRlcyB0aGUgcHJvdG9jb2wgdGhlIHNlcnZlciBpcyBzd2l0Y2hpbmcgdG9vLlxuKi9cbjEwMSB8XG4vKiogVEVNUE9SQVJZX1JFRElSRUNUXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNC43XG4qXG4qIFNlcnZlciBzZW50IHRoaXMgcmVzcG9uc2UgdG8gZGlyZWN0aW5nIGNsaWVudCB0byBnZXQgcmVxdWVzdGVkIHJlc291cmNlIHRvIGFub3RoZXIgVVJJIHdpdGggc2FtZSBtZXRob2QgdGhhdCB1c2VkIHByaW9yIHJlcXVlc3QuIFRoaXMgaGFzIHRoZSBzYW1lIHNlbWFudGljIHRoYW4gdGhlIDMwMiBGb3VuZCBIVFRQIHJlc3BvbnNlIGNvZGUsIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IHRoZSB1c2VyIGFnZW50IG11c3Qgbm90IGNoYW5nZSB0aGUgSFRUUCBtZXRob2QgdXNlZDogaWYgYSBQT1NUIHdhcyB1c2VkIGluIHRoZSBmaXJzdCByZXF1ZXN0LCBhIFBPU1QgbXVzdCBiZSB1c2VkIGluIHRoZSBzZWNvbmQgcmVxdWVzdC5cbiovXG4zMDcgfFxuLyoqIFRPT19NQU5ZX1JFUVVFU1RTXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjU4NSNzZWN0aW9uLTRcbipcbiogVGhlIHVzZXIgaGFzIHNlbnQgdG9vIG1hbnkgcmVxdWVzdHMgaW4gYSBnaXZlbiBhbW91bnQgb2YgdGltZSAoXCJyYXRlIGxpbWl0aW5nXCIpLlxuKi9cbjQyOSB8XG4vKiogVU5BVVRIT1JJWkVEXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNSNzZWN0aW9uLTMuMVxuKlxuKiBBbHRob3VnaCB0aGUgSFRUUCBzdGFuZGFyZCBzcGVjaWZpZXMgXCJ1bmF1dGhvcml6ZWRcIiwgc2VtYW50aWNhbGx5IHRoaXMgcmVzcG9uc2UgbWVhbnMgXCJ1bmF1dGhlbnRpY2F0ZWRcIi4gVGhhdCBpcywgdGhlIGNsaWVudCBtdXN0IGF1dGhlbnRpY2F0ZSBpdHNlbGYgdG8gZ2V0IHRoZSByZXF1ZXN0ZWQgcmVzcG9uc2UuXG4qL1xuNDAxIHxcbi8qKiBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OU1xuKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc3MjVcbipcbiogVGhlIHVzZXItYWdlbnQgcmVxdWVzdGVkIGEgcmVzb3VyY2UgdGhhdCBjYW5ub3QgbGVnYWxseSBiZSBwcm92aWRlZCwgc3VjaCBhcyBhIHdlYiBwYWdlIGNlbnNvcmVkIGJ5IGEgZ292ZXJubWVudC5cbiovXG40NTEgfFxuLyoqIFVOUFJPQ0VTU0FCTEVfRU5USVRZXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjUxOCNzZWN0aW9uLTEwLjNcbipcbiogVGhlIHJlcXVlc3Qgd2FzIHdlbGwtZm9ybWVkIGJ1dCB3YXMgdW5hYmxlIHRvIGJlIGZvbGxvd2VkIGR1ZSB0byBzZW1hbnRpYyBlcnJvcnMuXG4qL1xuNDIyIHxcbi8qKiBVTlNVUFBPUlRFRF9NRURJQV9UWVBFXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xM1xuKlxuKiBUaGUgbWVkaWEgZm9ybWF0IG9mIHRoZSByZXF1ZXN0ZWQgZGF0YSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIsIHNvIHRoZSBzZXJ2ZXIgaXMgcmVqZWN0aW5nIHRoZSByZXF1ZXN0LlxuKi9cbjQxNSB8XG4vKiogVVNFX1BST1hZXG4qIEBkZXByZWNhdGVkXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNC42XG4qXG4qIFdhcyBkZWZpbmVkIGluIGEgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgSFRUUCBzcGVjaWZpY2F0aW9uIHRvIGluZGljYXRlIHRoYXQgYSByZXF1ZXN0ZWQgcmVzcG9uc2UgbXVzdCBiZSBhY2Nlc3NlZCBieSBhIHByb3h5LiBJdCBoYXMgYmVlbiBkZXByZWNhdGVkIGR1ZSB0byBzZWN1cml0eSBjb25jZXJucyByZWdhcmRpbmcgaW4tYmFuZCBjb25maWd1cmF0aW9uIG9mIGEgcHJveHkuXG4qL1xuMzA1IHxcbi8qKiBNSVNESVJFQ1RFRF9SRVFVRVNUXG4qIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzc1NDAjc2VjdGlvbi05LjEuMlxuKlxuKiBEZWZpbmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uIG9mIEhUVFAvMiB0byBpbmRpY2F0ZSB0aGF0IGEgc2VydmVyIGlzIG5vdCBhYmxlIHRvIHByb2R1Y2UgYSByZXNwb25zZSBmb3IgdGhlIGNvbWJpbmF0aW9uIG9mIHNjaGVtZSBhbmQgYXV0aG9yaXR5IHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSByZXF1ZXN0IFVSSS5cbiovXG40MjFcblxudHlwZSBCYXNlUHJvYmxlbURvY3VtZW50ID0ge1xuICBkZXRhaWw/OiBzdHJpbmc7XG4gIGluc3RhbmNlPzogc3RyaW5nOyAvLyBpbnN0YW5jZSBjYW4gYmUgYSByZWxhdGl2ZSBVUkksIHNvIGFueSBzdHJpbmcgaXMgdmFsaWRcbiAgc3RhdHVzPzogU3RhdHVzQ29kZTtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7IC8vIHR5cGUgY2FuIGJlIGEgcmVsYXRpdmUgVVJJLCBzbyBhbnkgc3RyaW5nIGlzIHZhbGlkXG59XG5cbnR5cGUgRXh0ZW5kZWRQcm9ibGVtRG9jdW1lbnQgPSBPbWl0PFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXlvZiBCYXNlUHJvYmxlbURvY3VtZW50PiAmIEJhc2VQcm9ibGVtRG9jdW1lbnQ7XG5cbmV4cG9ydCBjbGFzcyBQcm9ibGVtRG9jdW1lbnQgaW1wbGVtZW50cyBFeHRlbmRlZFByb2JsZW1Eb2N1bWVudCB7XG4gIGRldGFpbD86IHN0cmluZztcbiAgaW5zdGFuY2U/OiBzdHJpbmc7XG4gIHN0YXR1cz86IFN0YXR1c0NvZGU7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBbazogc3RyaW5nXTogdW5rbm93bjtcbiAgY29uc3RydWN0b3IoZGF0YTogRXh0ZW5kZWRQcm9ibGVtRG9jdW1lbnQpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRhdGEpO1xuICB9XG59XG4iXX0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc2NBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ0gsTUFBYSxlQUFlO0lBTzFCOzs7OztPQUtHO0lBQ0gsWUFBWSxJQUErQjtRQUN6QyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFoQkQsMENBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBIdHRwIFN0YXR1cyBDb2RlcyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmV0dHltdWNoYnJ5Y2UvaHR0cC1zdGF0dXMtY29kZXMvYmxvYi9tYXN0ZXIvc3JjL3N0YXR1cy1jb2Rlcy50cyB1bmRlciBNSVQgTGljZW5zZVxuICogSWYgeW91IGtub3cgaG93IHRvIGNvbnZlcnQgbnVtZXJpYyBlbnVtIHZhbHVlcyB0byBhIHVuaW9uIHR5cGUsIHBsZWFzZSBzdWJtaXQgYSBQUi5cbiAqL1xudHlwZSBTdGF0dXNDb2RlID1cbiAgLyoqXG4gICAqIEFDQ0VQVEVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy4zXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCBub3QgeWV0IGFjdGVkIHVwb24uIEl0IGlzIG5vbi1jb21taXR0YWwsIG1lYW5pbmcgdGhhdCB0aGVyZSBpcyBubyB3YXkgaW4gSFRUUCB0byBsYXRlciBzZW5kIGFuIGFzeW5jaHJvbm91cyByZXNwb25zZSBpbmRpY2F0aW5nIHRoZSBvdXRjb21lIG9mIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QuIEl0IGlzIGludGVuZGVkIGZvciBjYXNlcyB3aGVyZSBhbm90aGVyIHByb2Nlc3Mgb3Igc2VydmVyIGhhbmRsZXMgdGhlIHJlcXVlc3QsIG9yIGZvciBiYXRjaCBwcm9jZXNzaW5nLlxuICAgKi9cbiAgfCAyMDJcbiAgLyoqXG4gICAqIEJBRF9HQVRFV0FZXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNi4zXG4gICAqXG4gICAqIFRoaXMgZXJyb3IgcmVzcG9uc2UgbWVhbnMgdGhhdCB0aGUgc2VydmVyLCB3aGlsZSB3b3JraW5nIGFzIGEgZ2F0ZXdheSB0byBnZXQgYSByZXNwb25zZSBuZWVkZWQgdG8gaGFuZGxlIHRoZSByZXF1ZXN0LCBnb3QgYW4gaW52YWxpZCByZXNwb25zZS5cbiAgICovXG4gIHwgNTAyXG4gIC8qKlxuICAgKiBCQURfUkVRVUVTVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuMVxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIG1lYW5zIHRoYXQgc2VydmVyIGNvdWxkIG5vdCB1bmRlcnN0YW5kIHRoZSByZXF1ZXN0IGR1ZSB0byBpbnZhbGlkIHN5bnRheC5cbiAgICovXG4gIHwgNDAwXG4gIC8qKlxuICAgKiBDT05GTElDVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuOFxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGlzIHNlbnQgd2hlbiBhIHJlcXVlc3QgY29uZmxpY3RzIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHNlcnZlci5cbiAgICovXG4gIHwgNDA5XG4gIC8qKlxuICAgKiBDT05USU5VRVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjIuMVxuICAgKlxuICAgKiBUaGlzIGludGVyaW0gcmVzcG9uc2UgaW5kaWNhdGVzIHRoYXQgZXZlcnl0aGluZyBzbyBmYXIgaXMgT0sgYW5kIHRoYXQgdGhlIGNsaWVudCBzaG91bGQgY29udGludWUgd2l0aCB0aGUgcmVxdWVzdCBvciBpZ25vcmUgaXQgaWYgaXQgaXMgYWxyZWFkeSBmaW5pc2hlZC5cbiAgICovXG4gIHwgMTAwXG4gIC8qKlxuICAgKiBDUkVBVEVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy4yXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IGhhcyBzdWNjZWVkZWQgYW5kIGEgbmV3IHJlc291cmNlIGhhcyBiZWVuIGNyZWF0ZWQgYXMgYSByZXN1bHQgb2YgaXQuIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSByZXNwb25zZSBzZW50IGFmdGVyIGEgUFVUIHJlcXVlc3QuXG4gICAqL1xuICB8IDIwMVxuICAvKipcbiAgICogRVhQRUNUQVRJT05fRkFJTEVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xNFxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGNvZGUgbWVhbnMgdGhlIGV4cGVjdGF0aW9uIGluZGljYXRlZCBieSB0aGUgRXhwZWN0IHJlcXVlc3QgaGVhZGVyIGZpZWxkIGNhbid0IGJlIG1ldCBieSB0aGUgc2VydmVyLlxuICAgKi9cbiAgfCA0MTdcbiAgLyoqXG4gICAqIEZBSUxFRF9ERVBFTkRFTkNZXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjUxOCNzZWN0aW9uLTEwLjVcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgZmFpbGVkIGR1ZSB0byBmYWlsdXJlIG9mIGEgcHJldmlvdXMgcmVxdWVzdC5cbiAgICovXG4gIHwgNDI0XG4gIC8qKlxuICAgKiBGT1JCSURERU5cbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjNcbiAgICpcbiAgICogVGhlIGNsaWVudCBkb2VzIG5vdCBoYXZlIGFjY2VzcyByaWdodHMgdG8gdGhlIGNvbnRlbnQsIGkuZS4gdGhleSBhcmUgdW5hdXRob3JpemVkLCBzbyBzZXJ2ZXIgaXMgcmVqZWN0aW5nIHRvIGdpdmUgcHJvcGVyIHJlc3BvbnNlLiBVbmxpa2UgNDAxLCB0aGUgY2xpZW50J3MgaWRlbnRpdHkgaXMga25vd24gdG8gdGhlIHNlcnZlci5cbiAgICovXG4gIHwgNDAzXG4gIC8qKlxuICAgKiBHQVRFV0FZX1RJTUVPVVRcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjVcbiAgICpcbiAgICogVGhpcyBlcnJvciByZXNwb25zZSBpcyBnaXZlbiB3aGVuIHRoZSBzZXJ2ZXIgaXMgYWN0aW5nIGFzIGEgZ2F0ZXdheSBhbmQgY2Fubm90IGdldCBhIHJlc3BvbnNlIGluIHRpbWUuXG4gICAqL1xuICB8IDUwNFxuICAvKipcbiAgICogR09ORVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuOVxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIHdvdWxkIGJlIHNlbnQgd2hlbiB0aGUgcmVxdWVzdGVkIGNvbnRlbnQgaGFzIGJlZW4gcGVybWFuZW50bHkgZGVsZXRlZCBmcm9tIHNlcnZlciwgd2l0aCBubyBmb3J3YXJkaW5nIGFkZHJlc3MuIENsaWVudHMgYXJlIGV4cGVjdGVkIHRvIHJlbW92ZSB0aGVpciBjYWNoZXMgYW5kIGxpbmtzIHRvIHRoZSByZXNvdXJjZS4gVGhlIEhUVFAgc3BlY2lmaWNhdGlvbiBpbnRlbmRzIHRoaXMgc3RhdHVzIGNvZGUgdG8gYmUgdXNlZCBmb3IgXCJsaW1pdGVkLXRpbWUsIHByb21vdGlvbmFsIHNlcnZpY2VzXCIuIEFQSXMgc2hvdWxkIG5vdCBmZWVsIGNvbXBlbGxlZCB0byBpbmRpY2F0ZSByZXNvdXJjZXMgdGhhdCBoYXZlIGJlZW4gZGVsZXRlZCB3aXRoIHRoaXMgc3RhdHVzIGNvZGUuXG4gICAqL1xuICB8IDQxMFxuICAvKipcbiAgICogSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjZcbiAgICpcbiAgICogVGhlIEhUVFAgdmVyc2lvbiB1c2VkIGluIHRoZSByZXF1ZXN0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlci5cbiAgICovXG4gIHwgNTA1XG4gIC8qKlxuICAgKiBJTV9BX1RFQVBPVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIzMjQjc2VjdGlvbi0yLjMuMlxuICAgKlxuICAgKiBBbnkgYXR0ZW1wdCB0byBicmV3IGNvZmZlZSB3aXRoIGEgdGVhcG90IHNob3VsZCByZXN1bHQgaW4gdGhlIGVycm9yIGNvZGUgXCI0MTggSSdtIGEgdGVhcG90XCIuIFRoZSByZXN1bHRpbmcgZW50aXR5IGJvZHkgTUFZIGJlIHNob3J0IGFuZCBzdG91dC5cbiAgICovXG4gIHwgNDE4XG4gIC8qKlxuICAgKiBJTlNVRkZJQ0lFTlRfU1BBQ0VfT05fUkVTT1VSQ0VcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTE4I3NlY3Rpb24tMTAuNlxuICAgKlxuICAgKiBUaGUgNTA3IChJbnN1ZmZpY2llbnQgU3RvcmFnZSkgc3RhdHVzIGNvZGUgbWVhbnMgdGhlIG1ldGhvZCBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoZSByZXNvdXJjZSBiZWNhdXNlIHRoZSBzZXJ2ZXIgaXMgdW5hYmxlIHRvIHN0b3JlIHRoZSByZXByZXNlbnRhdGlvbiBuZWVkZWQgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlIHRoZSByZXF1ZXN0LiBUaGlzIGNvbmRpdGlvbiBpcyBjb25zaWRlcmVkIHRvIGJlIHRlbXBvcmFyeS4gSWYgdGhlIHJlcXVlc3Qgd2hpY2ggcmVjZWl2ZWQgdGhpcyBzdGF0dXMgY29kZSB3YXMgdGhlIHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLCB0aGUgcmVxdWVzdCBNVVNUIE5PVCBiZSByZXBlYXRlZCB1bnRpbCBpdCBpcyByZXF1ZXN0ZWQgYnkgYSBzZXBhcmF0ZSB1c2VyIGFjdGlvbi5cbiAgICovXG4gIHwgNDE5XG4gIC8qKlxuICAgKiBJTlNVRkZJQ0lFTlRfU1RPUkFHRVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC42XG4gICAqXG4gICAqIFRoZSBzZXJ2ZXIgaGFzIGFuIGludGVybmFsIGNvbmZpZ3VyYXRpb24gZXJyb3I6IHRoZSBjaG9zZW4gdmFyaWFudCByZXNvdXJjZSBpcyBjb25maWd1cmVkIHRvIGVuZ2FnZSBpbiB0cmFuc3BhcmVudCBjb250ZW50IG5lZ290aWF0aW9uIGl0c2VsZiwgYW5kIGlzIHRoZXJlZm9yZSBub3QgYSBwcm9wZXIgZW5kIHBvaW50IGluIHRoZSBuZWdvdGlhdGlvbiBwcm9jZXNzLlxuICAgKi9cbiAgfCA1MDdcbiAgLyoqXG4gICAqIElOVEVSTkFMX1NFUlZFUl9FUlJPUlxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjYuMVxuICAgKlxuICAgKiBUaGUgc2VydmVyIGVuY291bnRlcmVkIGFuIHVuZXhwZWN0ZWQgY29uZGl0aW9uIHRoYXQgcHJldmVudGVkIGl0IGZyb20gZnVsZmlsbGluZyB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHwgNTAwXG4gIC8qKlxuICAgKiBMRU5HVEhfUkVRVUlSRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjEwXG4gICAqXG4gICAqIFRoZSBzZXJ2ZXIgcmVqZWN0ZWQgdGhlIHJlcXVlc3QgYmVjYXVzZSB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGZpZWxkIGlzIG5vdCBkZWZpbmVkIGFuZCB0aGUgc2VydmVyIHJlcXVpcmVzIGl0LlxuICAgKi9cbiAgfCA0MTFcbiAgLyoqXG4gICAqIExPQ0tFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC40XG4gICAqXG4gICAqIFRoZSByZXNvdXJjZSB0aGF0IGlzIGJlaW5nIGFjY2Vzc2VkIGlzIGxvY2tlZC5cbiAgICovXG4gIHwgNDIzXG4gIC8qKlxuICAgKiBNRVRIT0RfRkFJTFVSRVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9yZmNkaWZmP2RpZmZ0eXBlPS0taHdkaWZmJnVybDI9ZHJhZnQtaWV0Zi13ZWJkYXYtcHJvdG9jb2wtMDYudHh0XG4gICAqXG4gICAqIEEgZGVwcmVjYXRlZCByZXNwb25zZSB1c2VkIGJ5IHRoZSBTcHJpbmcgRnJhbWV3b3JrIHdoZW4gYSBtZXRob2QgaGFzIGZhaWxlZC5cbiAgICovXG4gIHwgNDIwXG4gIC8qKlxuICAgKiBNRVRIT0RfTk9UX0FMTE9XRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjVcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgbWV0aG9kIGlzIGtub3duIGJ5IHRoZSBzZXJ2ZXIgYnV0IGhhcyBiZWVuIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgdXNlZC4gRm9yIGV4YW1wbGUsIGFuIEFQSSBtYXkgZm9yYmlkIERFTEVURS1pbmcgYSByZXNvdXJjZS4gVGhlIHR3byBtYW5kYXRvcnkgbWV0aG9kcywgR0VUIGFuZCBIRUFELCBtdXN0IG5ldmVyIGJlIGRpc2FibGVkIGFuZCBzaG91bGQgbm90IHJldHVybiB0aGlzIGVycm9yIGNvZGUuXG4gICAqL1xuICB8IDQwNVxuICAvKipcbiAgICogTU9WRURfUEVSTUFORU5UTFlcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjJcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIG1lYW5zIHRoYXQgVVJJIG9mIHJlcXVlc3RlZCByZXNvdXJjZSBoYXMgYmVlbiBjaGFuZ2VkLiBQcm9iYWJseSwgbmV3IFVSSSB3b3VsZCBiZSBnaXZlbiBpbiB0aGUgcmVzcG9uc2UuXG4gICAqL1xuICB8IDMwMVxuICAvKipcbiAgICogTU9WRURfVEVNUE9SQVJJTFlcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjNcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIG1lYW5zIHRoYXQgVVJJIG9mIHJlcXVlc3RlZCByZXNvdXJjZSBoYXMgYmVlbiBjaGFuZ2VkIHRlbXBvcmFyaWx5LiBOZXcgY2hhbmdlcyBpbiB0aGUgVVJJIG1pZ2h0IGJlIG1hZGUgaW4gdGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB0aGlzIHNhbWUgVVJJIHNob3VsZCBiZSB1c2VkIGJ5IHRoZSBjbGllbnQgaW4gZnV0dXJlIHJlcXVlc3RzLlxuICAgKi9cbiAgfCAzMDJcbiAgLyoqXG4gICAqIE1VTFRJX1NUQVRVU1xuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC4yXG4gICAqXG4gICAqIEEgTXVsdGktU3RhdHVzIHJlc3BvbnNlIGNvbnZleXMgaW5mb3JtYXRpb24gYWJvdXQgbXVsdGlwbGUgcmVzb3VyY2VzIGluIHNpdHVhdGlvbnMgd2hlcmUgbXVsdGlwbGUgc3RhdHVzIGNvZGVzIG1pZ2h0IGJlIGFwcHJvcHJpYXRlLlxuICAgKi9cbiAgfCAyMDdcbiAgLyoqXG4gICAqIE1VTFRJUExFX0NIT0lDRVNcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjFcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgaGFzIG1vcmUgdGhhbiBvbmUgcG9zc2libGUgcmVzcG9uc2VzLiBVc2VyLWFnZW50IG9yIHVzZXIgc2hvdWxkIGNob29zZSBvbmUgb2YgdGhlbS4gVGhlcmUgaXMgbm8gc3RhbmRhcmRpemVkIHdheSB0byBjaG9vc2Ugb25lIG9mIHRoZSByZXNwb25zZXMuXG4gICAqL1xuICB8IDMwMFxuICAvKipcbiAgICogTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY1ODUjc2VjdGlvbi02XG4gICAqXG4gICAqIFRoZSA1MTEgc3RhdHVzIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlIGNsaWVudCBuZWVkcyB0byBhdXRoZW50aWNhdGUgdG8gZ2FpbiBuZXR3b3JrIGFjY2Vzcy5cbiAgICovXG4gIHwgNTExXG4gIC8qKlxuICAgKiBOT19DT05URU5UXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy41XG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIGNvbnRlbnQgdG8gc2VuZCBmb3IgdGhpcyByZXF1ZXN0LCBidXQgdGhlIGhlYWRlcnMgbWF5IGJlIHVzZWZ1bC4gVGhlIHVzZXItYWdlbnQgbWF5IHVwZGF0ZSBpdHMgY2FjaGVkIGhlYWRlcnMgZm9yIHRoaXMgcmVzb3VyY2Ugd2l0aCB0aGUgbmV3IG9uZXMuXG4gICAqL1xuICB8IDIwNFxuICAvKipcbiAgICogTk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT05cbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi4zLjRcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIG1lYW5zIHJldHVybmVkIG1ldGEtaW5mb3JtYXRpb24gc2V0IGlzIG5vdCBleGFjdCBzZXQgYXMgYXZhaWxhYmxlIGZyb20gdGhlIG9yaWdpbiBzZXJ2ZXIsIGJ1dCBjb2xsZWN0ZWQgZnJvbSBhIGxvY2FsIG9yIGEgdGhpcmQgcGFydHkgY29weS4gRXhjZXB0IHRoaXMgY29uZGl0aW9uLCAyMDAgT0sgcmVzcG9uc2Ugc2hvdWxkIGJlIHByZWZlcnJlZCBpbnN0ZWFkIG9mIHRoaXMgcmVzcG9uc2UuXG4gICAqL1xuICB8IDIwM1xuICAvKipcbiAgICogTk9UX0FDQ0VQVEFCTEVcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjZcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBpcyBzZW50IHdoZW4gdGhlIHdlYiBzZXJ2ZXIsIGFmdGVyIHBlcmZvcm1pbmcgc2VydmVyLWRyaXZlbiBjb250ZW50IG5lZ290aWF0aW9uLCBkb2Vzbid0IGZpbmQgYW55IGNvbnRlbnQgZm9sbG93aW5nIHRoZSBjcml0ZXJpYSBnaXZlbiBieSB0aGUgdXNlciBhZ2VudC5cbiAgICovXG4gIHwgNDA2XG4gIC8qKlxuICAgKiBOT1RfRk9VTkRcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjRcbiAgICpcbiAgICogVGhlIHNlcnZlciBjYW4gbm90IGZpbmQgcmVxdWVzdGVkIHJlc291cmNlLiBJbiB0aGUgYnJvd3NlciwgdGhpcyBtZWFucyB0aGUgVVJMIGlzIG5vdCByZWNvZ25pemVkLiBJbiBhbiBBUEksIHRoaXMgY2FuIGFsc28gbWVhbiB0aGF0IHRoZSBlbmRwb2ludCBpcyB2YWxpZCBidXQgdGhlIHJlc291cmNlIGl0c2VsZiBkb2VzIG5vdCBleGlzdC4gU2VydmVycyBtYXkgYWxzbyBzZW5kIHRoaXMgcmVzcG9uc2UgaW5zdGVhZCBvZiA0MDMgdG8gaGlkZSB0aGUgZXhpc3RlbmNlIG9mIGEgcmVzb3VyY2UgZnJvbSBhbiB1bmF1dGhvcml6ZWQgY2xpZW50LiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgcHJvYmFibHkgdGhlIG1vc3QgZmFtb3VzIG9uZSBkdWUgdG8gaXRzIGZyZXF1ZW50IG9jY3VycmVuY2Ugb24gdGhlIHdlYi5cbiAgICovXG4gIHwgNDA0XG4gIC8qKlxuICAgKiBOT1RfSU1QTEVNRU5URURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjJcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlciBhbmQgY2Fubm90IGJlIGhhbmRsZWQuIFRoZSBvbmx5IG1ldGhvZHMgdGhhdCBzZXJ2ZXJzIGFyZSByZXF1aXJlZCB0byBzdXBwb3J0IChhbmQgdGhlcmVmb3JlIHRoYXQgbXVzdCBub3QgcmV0dXJuIHRoaXMgY29kZSkgYXJlIEdFVCBhbmQgSEVBRC5cbiAgICovXG4gIHwgNTAxXG4gIC8qKlxuICAgKiBOT1RfTU9ESUZJRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMyI3NlY3Rpb24tNC4xXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCBmb3IgY2FjaGluZyBwdXJwb3Nlcy4gSXQgaXMgdGVsbGluZyB0byBjbGllbnQgdGhhdCByZXNwb25zZSBoYXMgbm90IGJlZW4gbW9kaWZpZWQuIFNvLCBjbGllbnQgY2FuIGNvbnRpbnVlIHRvIHVzZSBzYW1lIGNhY2hlZCB2ZXJzaW9uIG9mIHJlc3BvbnNlLlxuICAgKi9cbiAgfCAzMDRcbiAgLyoqXG4gICAqIE9LXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy4xXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IGhhcyBzdWNjZWVkZWQuIFRoZSBtZWFuaW5nIG9mIGEgc3VjY2VzcyB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBIVFRQIG1ldGhvZDpcbiAgICogR0VUOiBUaGUgcmVzb3VyY2UgaGFzIGJlZW4gZmV0Y2hlZCBhbmQgaXMgdHJhbnNtaXR0ZWQgaW4gdGhlIG1lc3NhZ2UgYm9keS5cbiAgICogSEVBRDogVGhlIGVudGl0eSBoZWFkZXJzIGFyZSBpbiB0aGUgbWVzc2FnZSBib2R5LlxuICAgKiBQT1NUOiBUaGUgcmVzb3VyY2UgZGVzY3JpYmluZyB0aGUgcmVzdWx0IG9mIHRoZSBhY3Rpb24gaXMgdHJhbnNtaXR0ZWQgaW4gdGhlIG1lc3NhZ2UgYm9keS5cbiAgICogVFJBQ0U6IFRoZSBtZXNzYWdlIGJvZHkgY29udGFpbnMgdGhlIHJlcXVlc3QgbWVzc2FnZSBhcyByZWNlaXZlZCBieSB0aGUgc2VydmVyXG4gICAqL1xuICB8IDIwMFxuICAvKipcbiAgICogUEFSVElBTF9DT05URU5UXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMyNzZWN0aW9uLTQuMVxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgdXNlZCBiZWNhdXNlIG9mIHJhbmdlIGhlYWRlciBzZW50IGJ5IHRoZSBjbGllbnQgdG8gc2VwYXJhdGUgZG93bmxvYWQgaW50byBtdWx0aXBsZSBzdHJlYW1zLlxuICAgKi9cbiAgfCAyMDZcbiAgLyoqXG4gICAqIFBBWU1FTlRfUkVRVUlSRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjJcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLiBJbml0aWFsIGFpbSBmb3IgY3JlYXRpbmcgdGhpcyBjb2RlIHdhcyB1c2luZyBpdCBmb3IgZGlnaXRhbCBwYXltZW50IHN5c3RlbXMgaG93ZXZlciB0aGlzIGlzIG5vdCB1c2VkIGN1cnJlbnRseS5cbiAgICovXG4gIHwgNDAyXG4gIC8qKlxuICAgKiBQRVJNQU5FTlRfUkVESVJFQ1RcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NTM4I3NlY3Rpb24tM1xuICAgKlxuICAgKiBUaGlzIG1lYW5zIHRoYXQgdGhlIHJlc291cmNlIGlzIG5vdyBwZXJtYW5lbnRseSBsb2NhdGVkIGF0IGFub3RoZXIgVVJJLCBzcGVjaWZpZWQgYnkgdGhlIExvY2F0aW9uOiBIVFRQIFJlc3BvbnNlIGhlYWRlci4gVGhpcyBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSAzMDEgTW92ZWQgUGVybWFuZW50bHkgSFRUUCByZXNwb25zZSBjb2RlLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgdXNlciBhZ2VudCBtdXN0IG5vdCBjaGFuZ2UgdGhlIEhUVFAgbWV0aG9kIHVzZWQ6IGlmIGEgUE9TVCB3YXMgdXNlZCBpbiB0aGUgZmlyc3QgcmVxdWVzdCwgYSBQT1NUIG11c3QgYmUgdXNlZCBpbiB0aGUgc2Vjb25kIHJlcXVlc3QuXG4gICAqL1xuICB8IDMwOFxuICAvKipcbiAgICogUFJFQ09ORElUSU9OX0ZBSUxFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzIjc2VjdGlvbi00LjJcbiAgICpcbiAgICogVGhlIGNsaWVudCBoYXMgaW5kaWNhdGVkIHByZWNvbmRpdGlvbnMgaW4gaXRzIGhlYWRlcnMgd2hpY2ggdGhlIHNlcnZlciBkb2VzIG5vdCBtZWV0LlxuICAgKi9cbiAgfCA0MTJcbiAgLyoqXG4gICAqIFBSRUNPTkRJVElPTl9SRVFVSVJFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY1ODUjc2VjdGlvbi0zXG4gICAqXG4gICAqIFRoZSBvcmlnaW4gc2VydmVyIHJlcXVpcmVzIHRoZSByZXF1ZXN0IHRvIGJlIGNvbmRpdGlvbmFsLiBJbnRlbmRlZCB0byBwcmV2ZW50IHRoZSAnbG9zdCB1cGRhdGUnIHByb2JsZW0sIHdoZXJlIGEgY2xpZW50IEdFVHMgYSByZXNvdXJjZSdzIHN0YXRlLCBtb2RpZmllcyBpdCwgYW5kIFBVVHMgaXQgYmFjayB0byB0aGUgc2VydmVyLCB3aGVuIG1lYW53aGlsZSBhIHRoaXJkIHBhcnR5IGhhcyBtb2RpZmllZCB0aGUgc3RhdGUgb24gdGhlIHNlcnZlciwgbGVhZGluZyB0byBhIGNvbmZsaWN0LlxuICAgKi9cbiAgfCA0MjhcbiAgLyoqXG4gICAqIFBST0NFU1NJTkdcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTE4I3NlY3Rpb24tMTAuMVxuICAgKlxuICAgKiBUaGlzIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlIHNlcnZlciBoYXMgcmVjZWl2ZWQgYW5kIGlzIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QsIGJ1dCBubyByZXNwb25zZSBpcyBhdmFpbGFibGUgeWV0LlxuICAgKi9cbiAgfCAxMDJcbiAgLyoqXG4gICAqIFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNSNzZWN0aW9uLTMuMlxuICAgKlxuICAgKiBUaGlzIGlzIHNpbWlsYXIgdG8gNDAxIGJ1dCBhdXRoZW50aWNhdGlvbiBpcyBuZWVkZWQgdG8gYmUgZG9uZSBieSBhIHByb3h5LlxuICAgKi9cbiAgfCA0MDdcbiAgLyoqXG4gICAqIFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTg1I3NlY3Rpb24tNVxuICAgKlxuICAgKiBUaGUgc2VydmVyIGlzIHVud2lsbGluZyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0IGJlY2F1c2UgaXRzIGhlYWRlciBmaWVsZHMgYXJlIHRvbyBsYXJnZS4gVGhlIHJlcXVlc3QgTUFZIGJlIHJlc3VibWl0dGVkIGFmdGVyIHJlZHVjaW5nIHRoZSBzaXplIG9mIHRoZSByZXF1ZXN0IGhlYWRlciBmaWVsZHMuXG4gICAqL1xuICB8IDQzMVxuICAvKipcbiAgICogUkVRVUVTVF9USU1FT1VUXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS43XG4gICAqXG4gICAqIFRoaXMgcmVzcG9uc2UgaXMgc2VudCBvbiBhbiBpZGxlIGNvbm5lY3Rpb24gYnkgc29tZSBzZXJ2ZXJzLCBldmVuIHdpdGhvdXQgYW55IHByZXZpb3VzIHJlcXVlc3QgYnkgdGhlIGNsaWVudC4gSXQgbWVhbnMgdGhhdCB0aGUgc2VydmVyIHdvdWxkIGxpa2UgdG8gc2h1dCBkb3duIHRoaXMgdW51c2VkIGNvbm5lY3Rpb24uIFRoaXMgcmVzcG9uc2UgaXMgdXNlZCBtdWNoIG1vcmUgc2luY2Ugc29tZSBicm93c2VycywgbGlrZSBDaHJvbWUsIEZpcmVmb3ggMjcrLCBvciBJRTksIHVzZSBIVFRQIHByZS1jb25uZWN0aW9uIG1lY2hhbmlzbXMgdG8gc3BlZWQgdXAgc3VyZmluZy4gQWxzbyBub3RlIHRoYXQgc29tZSBzZXJ2ZXJzIG1lcmVseSBzaHV0IGRvd24gdGhlIGNvbm5lY3Rpb24gd2l0aG91dCBzZW5kaW5nIHRoaXMgbWVzc2FnZS5cbiAgICovXG4gIHwgNDA4XG4gIC8qKlxuICAgKiBSRVFVRVNUX1RPT19MT05HXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xMVxuICAgKlxuICAgKiBSZXF1ZXN0IGVudGl0eSBpcyBsYXJnZXIgdGhhbiBsaW1pdHMgZGVmaW5lZCBieSBzZXJ2ZXI7IHRoZSBzZXJ2ZXIgbWlnaHQgY2xvc2UgdGhlIGNvbm5lY3Rpb24gb3IgcmV0dXJuIGFuIFJldHJ5LUFmdGVyIGhlYWRlciBmaWVsZC5cbiAgICovXG4gIHwgNDEzXG4gIC8qKlxuICAgKiBSRVFVRVNUX1VSSV9UT09fTE9OR1xuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuMTJcbiAgICpcbiAgICogVGhlIFVSSSByZXF1ZXN0ZWQgYnkgdGhlIGNsaWVudCBpcyBsb25nZXIgdGhhbiB0aGUgc2VydmVyIGlzIHdpbGxpbmcgdG8gaW50ZXJwcmV0LlxuICAgKi9cbiAgfCA0MTRcbiAgLyoqXG4gICAqIFJFUVVFU1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEVcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMzI3NlY3Rpb24tNC40XG4gICAqXG4gICAqIFRoZSByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIFJhbmdlIGhlYWRlciBmaWVsZCBpbiB0aGUgcmVxdWVzdCBjYW4ndCBiZSBmdWxmaWxsZWQ7IGl0J3MgcG9zc2libGUgdGhhdCB0aGUgcmFuZ2UgaXMgb3V0c2lkZSB0aGUgc2l6ZSBvZiB0aGUgdGFyZ2V0IFVSSSdzIGRhdGEuXG4gICAqL1xuICB8IDQxNlxuICAvKipcbiAgICogUkVTRVRfQ09OVEVOVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjMuNlxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgc2VudCBhZnRlciBhY2NvbXBsaXNoaW5nIHJlcXVlc3QgdG8gdGVsbCB1c2VyIGFnZW50IHJlc2V0IGRvY3VtZW50IHZpZXcgd2hpY2ggc2VudCB0aGlzIHJlcXVlc3QuXG4gICAqL1xuICB8IDIwNVxuICAvKipcbiAgICogU0VFX09USEVSXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNC40XG4gICAqXG4gICAqIFNlcnZlciBzZW50IHRoaXMgcmVzcG9uc2UgdG8gZGlyZWN0aW5nIGNsaWVudCB0byBnZXQgcmVxdWVzdGVkIHJlc291cmNlIHRvIGFub3RoZXIgVVJJIHdpdGggYW4gR0VUIHJlcXVlc3QuXG4gICAqL1xuICB8IDMwM1xuICAvKipcbiAgICogU0VSVklDRV9VTkFWQUlMQUJMRVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjYuNFxuICAgKlxuICAgKiBUaGUgc2VydmVyIGlzIG5vdCByZWFkeSB0byBoYW5kbGUgdGhlIHJlcXVlc3QuIENvbW1vbiBjYXVzZXMgYXJlIGEgc2VydmVyIHRoYXQgaXMgZG93biBmb3IgbWFpbnRlbmFuY2Ugb3IgdGhhdCBpcyBvdmVybG9hZGVkLiBOb3RlIHRoYXQgdG9nZXRoZXIgd2l0aCB0aGlzIHJlc3BvbnNlLCBhIHVzZXItZnJpZW5kbHkgcGFnZSBleHBsYWluaW5nIHRoZSBwcm9ibGVtIHNob3VsZCBiZSBzZW50LiBUaGlzIHJlc3BvbnNlcyBzaG91bGQgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IGNvbmRpdGlvbnMgYW5kIHRoZSBSZXRyeS1BZnRlcjogSFRUUCBoZWFkZXIgc2hvdWxkLCBpZiBwb3NzaWJsZSwgY29udGFpbiB0aGUgZXN0aW1hdGVkIHRpbWUgYmVmb3JlIHRoZSByZWNvdmVyeSBvZiB0aGUgc2VydmljZS4gVGhlIHdlYm1hc3RlciBtdXN0IGFsc28gdGFrZSBjYXJlIGFib3V0IHRoZSBjYWNoaW5nLXJlbGF0ZWQgaGVhZGVycyB0aGF0IGFyZSBzZW50IGFsb25nIHdpdGggdGhpcyByZXNwb25zZSwgYXMgdGhlc2UgdGVtcG9yYXJ5IGNvbmRpdGlvbiByZXNwb25zZXMgc2hvdWxkIHVzdWFsbHkgbm90IGJlIGNhY2hlZC5cbiAgICovXG4gIHwgNTAzXG4gIC8qKlxuICAgKiBTV0lUQ0hJTkdfUFJPVE9DT0xTXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMi4yXG4gICAqXG4gICAqIFRoaXMgY29kZSBpcyBzZW50IGluIHJlc3BvbnNlIHRvIGFuIFVwZ3JhZGUgcmVxdWVzdCBoZWFkZXIgYnkgdGhlIGNsaWVudCwgYW5kIGluZGljYXRlcyB0aGUgcHJvdG9jb2wgdGhlIHNlcnZlciBpcyBzd2l0Y2hpbmcgdG9vLlxuICAgKi9cbiAgfCAxMDFcbiAgLyoqXG4gICAqIFRFTVBPUkFSWV9SRURJUkVDVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjQuN1xuICAgKlxuICAgKiBTZXJ2ZXIgc2VudCB0aGlzIHJlc3BvbnNlIHRvIGRpcmVjdGluZyBjbGllbnQgdG8gZ2V0IHJlcXVlc3RlZCByZXNvdXJjZSB0byBhbm90aGVyIFVSSSB3aXRoIHNhbWUgbWV0aG9kIHRoYXQgdXNlZCBwcmlvciByZXF1ZXN0LiBUaGlzIGhhcyB0aGUgc2FtZSBzZW1hbnRpYyB0aGFuIHRoZSAzMDIgRm91bmQgSFRUUCByZXNwb25zZSBjb2RlLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgdXNlciBhZ2VudCBtdXN0IG5vdCBjaGFuZ2UgdGhlIEhUVFAgbWV0aG9kIHVzZWQ6IGlmIGEgUE9TVCB3YXMgdXNlZCBpbiB0aGUgZmlyc3QgcmVxdWVzdCwgYSBQT1NUIG11c3QgYmUgdXNlZCBpbiB0aGUgc2Vjb25kIHJlcXVlc3QuXG4gICAqL1xuICB8IDMwN1xuICAvKipcbiAgICogVE9PX01BTllfUkVRVUVTVFNcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTg1I3NlY3Rpb24tNFxuICAgKlxuICAgKiBUaGUgdXNlciBoYXMgc2VudCB0b28gbWFueSByZXF1ZXN0cyBpbiBhIGdpdmVuIGFtb3VudCBvZiB0aW1lIChcInJhdGUgbGltaXRpbmdcIikuXG4gICAqL1xuICB8IDQyOVxuICAvKipcbiAgICogVU5BVVRIT1JJWkVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNSNzZWN0aW9uLTMuMVxuICAgKlxuICAgKiBBbHRob3VnaCB0aGUgSFRUUCBzdGFuZGFyZCBzcGVjaWZpZXMgXCJ1bmF1dGhvcml6ZWRcIiwgc2VtYW50aWNhbGx5IHRoaXMgcmVzcG9uc2UgbWVhbnMgXCJ1bmF1dGhlbnRpY2F0ZWRcIi4gVGhhdCBpcywgdGhlIGNsaWVudCBtdXN0IGF1dGhlbnRpY2F0ZSBpdHNlbGYgdG8gZ2V0IHRoZSByZXF1ZXN0ZWQgcmVzcG9uc2UuXG4gICAqL1xuICB8IDQwMVxuICAvKipcbiAgICogVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlNcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NzI1XG4gICAqXG4gICAqIFRoZSB1c2VyLWFnZW50IHJlcXVlc3RlZCBhIHJlc291cmNlIHRoYXQgY2Fubm90IGxlZ2FsbHkgYmUgcHJvdmlkZWQsIHN1Y2ggYXMgYSB3ZWIgcGFnZSBjZW5zb3JlZCBieSBhIGdvdmVybm1lbnQuXG4gICAqL1xuICB8IDQ1MVxuICAvKipcbiAgICogVU5QUk9DRVNTQUJMRV9FTlRJVFlcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTE4I3NlY3Rpb24tMTAuM1xuICAgKlxuICAgKiBUaGUgcmVxdWVzdCB3YXMgd2VsbC1mb3JtZWQgYnV0IHdhcyB1bmFibGUgdG8gYmUgZm9sbG93ZWQgZHVlIHRvIHNlbWFudGljIGVycm9ycy5cbiAgICovXG4gIHwgNDIyXG4gIC8qKlxuICAgKiBVTlNVUFBPUlRFRF9NRURJQV9UWVBFXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xM1xuICAgKlxuICAgKiBUaGUgbWVkaWEgZm9ybWF0IG9mIHRoZSByZXF1ZXN0ZWQgZGF0YSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIsIHNvIHRoZSBzZXJ2ZXIgaXMgcmVqZWN0aW5nIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgfCA0MTVcbiAgLyoqXG4gICAqIFVTRV9QUk9YWVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjQuNlxuICAgKlxuICAgKiBXYXMgZGVmaW5lZCBpbiBhIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIEhUVFAgc3BlY2lmaWNhdGlvbiB0byBpbmRpY2F0ZSB0aGF0IGEgcmVxdWVzdGVkIHJlc3BvbnNlIG11c3QgYmUgYWNjZXNzZWQgYnkgYSBwcm94eS4gSXQgaGFzIGJlZW4gZGVwcmVjYXRlZCBkdWUgdG8gc2VjdXJpdHkgY29uY2VybnMgcmVnYXJkaW5nIGluLWJhbmQgY29uZmlndXJhdGlvbiBvZiBhIHByb3h5LlxuICAgKi9cbiAgfCAzMDVcbiAgLyoqXG4gICAqIE1JU0RJUkVDVEVEX1JFUVVFU1RcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzU0MCNzZWN0aW9uLTkuMS4yXG4gICAqXG4gICAqIERlZmluZWQgaW4gdGhlIHNwZWNpZmljYXRpb24gb2YgSFRUUC8yIHRvIGluZGljYXRlIHRoYXQgYSBzZXJ2ZXIgaXMgbm90IGFibGUgdG8gcHJvZHVjZSBhIHJlc3BvbnNlIGZvciB0aGUgY29tYmluYXRpb24gb2Ygc2NoZW1lIGFuZCBhdXRob3JpdHkgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlcXVlc3QgVVJJLlxuICAgKi9cbiAgfCA0MjE7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgUHJvYmxlbSBEb2N1bWVudHMsIHdoaWNoIGluY2x1ZGVzIHRoZSBub24tZXh0ZW5zaW9uIGZpZWxkc1xuICovXG5leHBvcnQgdHlwZSBCYXNlUHJvYmxlbURvY3VtZW50UHJvcGVydGllcyA9IHtcbiAgLyoqXG4gICAqIEEgVVJJIHJlZmVyZW5jZSBbe0BsaW5rIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiBSRkMzOTg2fV0gdGhhdCBpZGVudGlmaWVzIHRoZVxuICAgKiBwcm9ibGVtIHR5cGUuICBUaGlzIHNwZWNpZmljYXRpb24gZW5jb3VyYWdlcyB0aGF0LCB3aGVuXG4gICAqIGRlcmVmZXJlbmNlZCwgaXQgcHJvdmlkZSBodW1hbi1yZWFkYWJsZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICogcHJvYmxlbSB0eXBlIChlLmcuLCB1c2luZyBIVE1MIFt7QGxpbmsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM3ODA3I3JlZi1XM0MuUkVDLWh0bWw1LTIwMTQxMDI4IFczQy5SRUMtaHRtbDUtMjAxNDEwMjh9XSkuICBXaGVuXG4gICAqIHRoaXMgbWVtYmVyIGlzIG5vdCBwcmVzZW50LCBpdHMgdmFsdWUgaXMgYXNzdW1lZCB0byBiZVxuICAgKiBcImFib3V0OmJsYW5rXCIuXG4gICAqL1xuICB0eXBlPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBzaG9ydCwgaHVtYW4tcmVhZGFibGUgc3VtbWFyeSBvZiB0aGUgcHJvYmxlbVxuICAgKiB0eXBlLiAgSXQgU0hPVUxEIE5PVCBjaGFuZ2UgZnJvbSBvY2N1cnJlbmNlIHRvIG9jY3VycmVuY2Ugb2YgdGhlXG4gICAqIHByb2JsZW0sIGV4Y2VwdCBmb3IgcHVycG9zZXMgb2YgbG9jYWxpemF0aW9uIChlLmcuLCB1c2luZ1xuICAgKiBwcm9hY3RpdmUgY29udGVudCBuZWdvdGlhdGlvbjsgc2VlIHtAbGluayBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzcyMzEjc2VjdGlvbi0zLjQgW1JGQzcyMzFdLCBTZWN0aW9uIDMuNH0pLlxuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgSFRUUCBzdGF0dXMgY29kZSAoe0BsaW5rIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYgW1JGQzcyMzFdLCBTZWN0aW9uIDZ9KVxuICAgKiBnZW5lcmF0ZWQgYnkgdGhlIG9yaWdpbiBzZXJ2ZXIgZm9yIHRoaXMgb2NjdXJyZW5jZSBvZiB0aGUgcHJvYmxlbS5cbiAgICovXG4gIHN0YXR1cz86IFN0YXR1c0NvZGU7XG4gIC8qKlxuICAgKiBBIGh1bWFuLXJlYWRhYmxlIGV4cGxhbmF0aW9uIHNwZWNpZmljIHRvIHRoaXMgb2NjdXJyZW5jZSBvZiB0aGUgcHJvYmxlbS5cbiAgICovXG4gIGRldGFpbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgVVJJIHJlZmVyZW5jZSB0aGF0IGlkZW50aWZpZXMgdGhlIHNwZWNpZmljXG4gICAqIG9jY3VycmVuY2Ugb2YgdGhlIHByb2JsZW0uICBJdCBtYXkgb3IgbWF5IG5vdCB5aWVsZCBmdXJ0aGVyXG4gICAqIGluZm9ybWF0aW9uIGlmIGRlcmVmZXJlbmNlZC5cbiAgICovXG4gIGluc3RhbmNlPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBUaGUgUHJvYmxlbSBEb2N1bWVudCB3aXRoIGV4dGVuc2lvbnNcbiAqXG4gKiBOb3RlIHRoZSB1c2Ugb2YgT21pdCwgdGhpcyBhbGxvd3MgYXV0by1jb21wbGV0aW9uIG9mIHRoZSBiYXNlIGZpZWxkc1xuICovXG5leHBvcnQgdHlwZSBQcm9ibGVtRG9jdW1lbnRQcm9wZXJ0aWVzID0gT21pdDxcbiAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGtleW9mIEJhc2VQcm9ibGVtRG9jdW1lbnRQcm9wZXJ0aWVzXG4+ICZcbiAgQmFzZVByb2JsZW1Eb2N1bWVudFByb3BlcnRpZXM7XG5cbi8qKlxuICpcbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBSRkM3ODA3IFwicHJvYmxlbSBkZXRhaWxcIiwgYSB3YXkgdG8gY2FycnkgbWFjaGluZS1cbiAqIHJlYWRhYmxlIGRldGFpbHMgb2YgZXJyb3JzIGluIGEgSFRUUCByZXNwb25zZSB0byBhdm9pZCB0aGUgbmVlZCB0b1xuICogZGVmaW5lIG5ldyBlcnJvciByZXNwb25zZSBmb3JtYXRzIGZvciBIVFRQIEFQSXMuXG4gKlxuICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzgwN1xuICpcbiAqIENvbnN1bWVycyBNVVNUIHVzZSB0aGUgXCJ0eXBlXCIgc3RyaW5nIGFzIHRoZSBwcmltYXJ5IGlkZW50aWZpZXIgZm9yXG4gKiB0aGUgcHJvYmxlbSB0eXBlOyB0aGUgXCJ0aXRsZVwiIHN0cmluZyBpcyBhZHZpc29yeSBhbmQgaW5jbHVkZWQgb25seVxuICogZm9yIHVzZXJzIHdobyBhcmUgbm90IGF3YXJlIG9mIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFVSSSBhbmQgZG8gbm90XG4gKiBoYXZlIHRoZSBhYmlsaXR5IHRvIGRpc2NvdmVyIHRoZW0gKGUuZy4sIG9mZmxpbmUgbG9nIGFuYWx5c2lzKS5cbiAqIENvbnN1bWVycyBTSE9VTEQgTk9UIGF1dG9tYXRpY2FsbHkgZGVyZWZlcmVuY2UgdGhlIHR5cGUgVVJJLlxuICpcbiAqIFRoZSBcInN0YXR1c1wiIG1lbWJlciwgaWYgcHJlc2VudCwgaXMgb25seSBhZHZpc29yeTsgaXQgY29udmV5cyB0aGVcbiAqIEhUVFAgc3RhdHVzIGNvZGUgdXNlZCBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIHRoZSBjb25zdW1lci5cbiAqIEdlbmVyYXRvcnMgTVVTVCB1c2UgdGhlIHNhbWUgc3RhdHVzIGNvZGUgaW4gdGhlIGFjdHVhbCBIVFRQIHJlc3BvbnNlLFxuICogdG8gYXNzdXJlIHRoYXQgZ2VuZXJpYyBIVFRQIHNvZnR3YXJlIHRoYXQgZG9lcyBub3QgdW5kZXJzdGFuZCB0aGlzXG4gKiBmb3JtYXQgc3RpbGwgYmVoYXZlcyBjb3JyZWN0bHkuICBTZWUgU2VjdGlvbiA1IGZvciBmdXJ0aGVyIGNhdmVhdHNcbiAqIHJlZ2FyZGluZyBpdHMgdXNlLlxuICpcbiAqIENvbnN1bWVycyBjYW4gdXNlIHRoZSBzdGF0dXMgbWVtYmVyIHRvIGRldGVybWluZSB3aGF0IHRoZSBvcmlnaW5hbFxuICogc3RhdHVzIGNvZGUgdXNlZCBieSB0aGUgZ2VuZXJhdG9yIHdhcywgaW4gY2FzZXMgd2hlcmUgaXQgaGFzIGJlZW5cbiAqIGNoYW5nZWQgKGUuZy4sIGJ5IGFuIGludGVybWVkaWFyeSBvciBjYWNoZSksIGFuZCB3aGVuIG1lc3NhZ2UgYm9kaWVzXG4gKiBwZXJzaXN0IHdpdGhvdXQgSFRUUCBpbmZvcm1hdGlvbi4gIEdlbmVyaWMgSFRUUCBzb2Z0d2FyZSB3aWxsIHN0aWxsXG4gKiB1c2UgdGhlIEhUVFAgc3RhdHVzIGNvZGUuXG4gKlxuICogVGhlIFwiZGV0YWlsXCIgbWVtYmVyLCBpZiBwcmVzZW50LCBvdWdodCB0byBmb2N1cyBvbiBoZWxwaW5nIHRoZSBjbGllbnRcbiAqIGNvcnJlY3QgdGhlIHByb2JsZW0sIHJhdGhlciB0aGFuIGdpdmluZyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uXG4gKlxuICogQ29uc3VtZXJzIFNIT1VMRCBOT1QgcGFyc2UgdGhlIFwiZGV0YWlsXCIgbWVtYmVyIGZvciBpbmZvcm1hdGlvbjtcbiAqIGV4dGVuc2lvbnMgYXJlIG1vcmUgc3VpdGFibGUgYW5kIGxlc3MgZXJyb3ItcHJvbmUgd2F5cyB0byBvYnRhaW4gc3VjaFxuICogaW5mb3JtYXRpb24uXG4gKlxuICogTm90ZSB0aGF0IGJvdGgge0BsaW5rIEJhc2VQcm9ibGVtRG9jdW1lbnRQcm9wZXJ0aWVzLnR5cGUgdHlwZX0gYW5kIHtAbGluayBCYXNlUHJvYmxlbURvY3VtZW50UHJvcGVydGllcy5pbnN0YW5jZSBpbnN0YW5jZX0gYWNjZXB0IHJlbGF0aXZlIFVSSXM7IHRoaXMgbWVhbnNcbiAqIHRoYXQgdGhleSBtdXN0IGJlIHJlc29sdmVkIHJlbGF0aXZlIHRvIHRoZSBkb2N1bWVudCdzIGJhc2UgVVJJLCBhc1xuICogcGVyIHtAbGluayBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01IFtSRkMzOTg2XSwgU2VjdGlvbiA1fS5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb2JsZW1Eb2N1bWVudCBpbXBsZW1lbnRzIFByb2JsZW1Eb2N1bWVudFByb3BlcnRpZXMge1xuICBkZXRhaWw/OiBzdHJpbmc7XG4gIGluc3RhbmNlPzogc3RyaW5nO1xuICBzdGF0dXM/OiBTdGF0dXNDb2RlO1xuICB0aXRsZT86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgW2s6IHN0cmluZ106IHVua25vd247XG4gIC8qKlxuICAgKlxuICAgKiBjb25zdHJ1Y3QgYSBuZXcgUHJvYmxlbURvY3VtZW50IGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIHByb3BlcnRpZXMgdG8gYXNzaWduIHRvIHRoZSBuZXcgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKGRhdGE6IFByb2JsZW1Eb2N1bWVudFByb3BlcnRpZXMpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRhdGEpO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,17 +1,21 @@
1
1
  {
2
2
  "name": "@mountainpass/problem-document",
3
- "description": "A basic RFC7807 Problem Document with basic type checking and autocomplete",
3
+ "description": "A basic RFC7807 Problem Details document with basic type checking and autocomplete",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/mountain-pass/problem-document.git"
7
+ },
4
8
  "scripts": {
5
9
  "build": "npx projen build",
6
10
  "bump": "npx projen bump",
7
11
  "clobber": "npx projen clobber",
8
12
  "compile": "npx projen compile",
9
13
  "default": "npx projen default",
14
+ "docgen": "npx projen docgen",
10
15
  "eject": "npx projen eject",
11
16
  "eslint": "npx projen eslint",
12
17
  "package": "npx projen package",
13
18
  "post-compile": "npx projen post-compile",
14
- "post-upgrade": "npx projen post-upgrade",
15
19
  "pre-compile": "npx projen pre-compile",
16
20
  "prepare": "npx projen prepare",
17
21
  "release": "npx projen release",
@@ -19,40 +23,69 @@
19
23
  "test:update": "npx projen test:update",
20
24
  "test:watch": "npx projen test:watch",
21
25
  "unbump": "npx projen unbump",
22
- "upgrade": "npx projen upgrade",
23
26
  "watch": "npx projen watch",
24
27
  "projen": "npx projen"
25
28
  },
29
+ "author": {
30
+ "name": "Mountain Pass",
31
+ "email": "info@mountain-pass.com.au",
32
+ "organization": true
33
+ },
26
34
  "devDependencies": {
27
35
  "@commitlint/cli": "^16.2.4",
28
36
  "@commitlint/config-conventional": "^16.2.4",
37
+ "@mountainpass/projen-typescript-library": "^0.1.0",
29
38
  "@types/http-status-codes": "^1.2.0",
30
39
  "@types/jest": "^27.4.1",
31
40
  "@types/node": "^12",
32
41
  "@typescript-eslint/eslint-plugin": "^5",
33
42
  "@typescript-eslint/parser": "^5",
43
+ "cspell": "*",
34
44
  "eslint": "^8",
45
+ "eslint-config-prettier": "^8.5.0",
35
46
  "eslint-import-resolver-node": "^0.3.6",
36
47
  "eslint-import-resolver-typescript": "^2.7.1",
37
48
  "eslint-plugin-import": "^2.26.0",
49
+ "eslint-plugin-jsdoc": "^39.2.9",
50
+ "eslint-plugin-jsdoc-typescript": "^2.1.0",
51
+ "eslint-plugin-prettier": "^4.0.0",
52
+ "eslint-plugin-unicorn": "^42.0.0",
38
53
  "http-status-codes": "^2.2.0",
39
54
  "husky": "^7.0.4",
40
55
  "jest": "^27",
41
56
  "jest-junit": "^13",
42
57
  "json-schema": "^0.4.0",
43
- "npm-check-updates": "^12",
58
+ "prettier": "^2.6.2",
44
59
  "projen": "^0.54.50",
45
60
  "standard-version": "^9",
46
- "ts-jest": "^27.1.4",
61
+ "ts-jest": "^27",
62
+ "ts-node": "^9",
63
+ "typedoc": "^0.22.15",
47
64
  "typescript": "^4.6.3"
48
65
  },
66
+ "keywords": [
67
+ "problem-details",
68
+ "rfc7807"
69
+ ],
49
70
  "main": "lib/index.js",
50
71
  "license": "Apache-2.0",
72
+ "homepage": "https://github.com/mountain-pass/problem-document",
51
73
  "publishConfig": {
52
74
  "access": "public"
53
75
  },
54
- "version": "0.0.2",
76
+ "version": "0.0.5",
77
+ "bugs": {
78
+ "url": "https://github.com/mountain-pass/problem-document/issues"
79
+ },
55
80
  "jest": {
81
+ "coverageThreshold": {
82
+ "global": {
83
+ "branches": 100,
84
+ "functions": 100,
85
+ "lines": 100,
86
+ "statements": 100
87
+ }
88
+ },
56
89
  "testMatch": [
57
90
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",
58
91
  "<rootDir>/(test|src)/**/?(*.)+(spec|test).ts?(x)"
@@ -93,5 +126,8 @@
93
126
  }
94
127
  },
95
128
  "types": "lib/index.d.ts",
129
+ "contributors": [
130
+ "Tom Howard <tom@mountainpass.com.au>"
131
+ ],
96
132
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
97
133
  }
@@ -0,0 +1,6 @@
1
+ {
2
+ "recommendations": [
3
+ "dbaeumer.vscode-eslint",
4
+ "streetsidesoftware.code-spell-checker"
5
+ ]
6
+ }
@@ -1 +0,0 @@
1
- module.exports = {extends: ['@commitlint/config-conventional']}