UNPKG

22.8 kBJavaScriptView Raw
1export class AuthConfig {
2 constructor(json) {
3 /**
4 * The client's id as registered with the auth server
5 */
6 this.clientId = '';
7 /**
8 * The client's redirectUri as registered with the auth server
9 */
10 this.redirectUri = '';
11 /**
12 * An optional second redirectUri where the auth server
13 * redirects the user to after logging out.
14 */
15 this.postLogoutRedirectUri = '';
16 /**
17 * Defines whether to use 'redirectUri' as a replacement
18 * of 'postLogoutRedirectUri' if the latter is not set.
19 */
20 this.redirectUriAsPostLogoutRedirectUriFallback = true;
21 /**
22 * The auth server's endpoint that allows to log
23 * the user in when using implicit flow.
24 */
25 this.loginUrl = '';
26 /**
27 * The requested scopes
28 */
29 this.scope = 'openid profile';
30 this.resource = '';
31 this.rngUrl = '';
32 /**
33 * Defines whether to use OpenId Connect during
34 * implicit flow.
35 */
36 this.oidc = true;
37 /**
38 * Defines whether to request an access token during
39 * implicit flow.
40 */
41 this.requestAccessToken = true;
42 this.options = null;
43 /**
44 * The issuer's uri.
45 */
46 this.issuer = '';
47 /**
48 * The logout url.
49 */
50 this.logoutUrl = '';
51 /**
52 * Defines whether to clear the hash fragment after logging in.
53 */
54 this.clearHashAfterLogin = true;
55 /**
56 * Url of the token endpoint as defined by OpenId Connect and OAuth 2.
57 */
58 this.tokenEndpoint = null;
59 /**
60 * Url of the revocation endpoint as defined by OpenId Connect and OAuth 2.
61 */
62 this.revocationEndpoint = null;
63 /**
64 * Names of known parameters sent out in the TokenResponse. https://tools.ietf.org/html/rfc6749#section-5.1
65 */
66 this.customTokenParameters = [];
67 /**
68 * Url of the userinfo endpoint as defined by OpenId Connect.
69 */
70 this.userinfoEndpoint = null;
71 this.responseType = '';
72 /**
73 * Defines whether additional debug information should
74 * be shown at the console. Note that in certain browsers
75 * the verbosity of the console needs to be explicitly set
76 * to include Debug level messages.
77 */
78 this.showDebugInformation = false;
79 /**
80 * The redirect uri used when doing silent refresh.
81 */
82 this.silentRefreshRedirectUri = '';
83 this.silentRefreshMessagePrefix = '';
84 /**
85 * Set this to true to display the iframe used for
86 * silent refresh for debugging.
87 */
88 this.silentRefreshShowIFrame = false;
89 /**
90 * Timeout for silent refresh.
91 * @internal
92 * @deprecated use silentRefreshTimeout
93 */
94 this.siletRefreshTimeout = 1000 * 20;
95 /**
96 * Timeout for silent refresh.
97 */
98 this.silentRefreshTimeout = 1000 * 20;
99 /**
100 * Some auth servers don't allow using password flow
101 * w/o a client secret while the standards do not
102 * demand for it. In this case, you can set a password
103 * here. As this password is exposed to the public
104 * it does not bring additional security and is therefore
105 * as good as using no password.
106 */
107 this.dummyClientSecret = '';
108 /**
109 * Defines whether https is required.
110 * The default value is remoteOnly which only allows
111 * http for localhost, while every other domains need
112 * to be used with https.
113 */
114 this.requireHttps = 'remoteOnly';
115 /**
116 * Defines whether every url provided by the discovery
117 * document has to start with the issuer's url.
118 */
119 this.strictDiscoveryDocumentValidation = true;
120 /**
121 * JSON Web Key Set (https://tools.ietf.org/html/rfc7517)
122 * with keys used to validate received id_tokens.
123 * This is taken out of the disovery document. Can be set manually too.
124 */
125 this.jwks = null;
126 /**
127 * Map with additional query parameter that are appended to
128 * the request when initializing implicit flow.
129 */
130 this.customQueryParams = null;
131 this.silentRefreshIFrameName = 'angular-oauth-oidc-silent-refresh-iframe';
132 /**
133 * Defines when the token_timeout event should be raised.
134 * If you set this to the default value 0.75, the event
135 * is triggered after 75% of the token's life time.
136 */
137 this.timeoutFactor = 0.75;
138 /**
139 * If true, the lib will try to check whether the user
140 * is still logged in on a regular basis as described
141 * in http://openid.net/specs/openid-connect-session-1_0.html#ChangeNotification
142 */
143 this.sessionChecksEnabled = false;
144 /**
145 * Interval in msec for checking the session
146 * according to http://openid.net/specs/openid-connect-session-1_0.html#ChangeNotification
147 */
148 this.sessionCheckIntervall = 3 * 1000;
149 /**
150 * Url for the iframe used for session checks
151 */
152 this.sessionCheckIFrameUrl = null;
153 /**
154 * Name of the iframe to use for session checks
155 */
156 this.sessionCheckIFrameName = 'angular-oauth-oidc-check-session-iframe';
157 /**
158 * This property has been introduced to disable at_hash checks
159 * and is indented for Identity Provider that does not deliver
160 * an at_hash EVEN THOUGH its recommended by the OIDC specs.
161 * Of course, when disabling these checks then we are bypassing
162 * a security check which means we are more vulnerable.
163 */
164 this.disableAtHashCheck = false;
165 /**
166 * Defines wether to check the subject of a refreshed token after silent refresh.
167 * Normally, it should be the same as before.
168 */
169 this.skipSubjectCheck = false;
170 this.useIdTokenHintForSilentRefresh = false;
171 /**
172 * Defined whether to skip the validation of the issuer in the discovery document.
173 * Normally, the discovey document's url starts with the url of the issuer.
174 */
175 this.skipIssuerCheck = false;
176 /**
177 * final state sent to issuer is built as follows:
178 * state = nonce + nonceStateSeparator + additional state
179 * Default separator is ';' (encoded %3B).
180 * In rare cases, this character might be forbidden or inconvenient to use by the issuer so it can be customized.
181 */
182 this.nonceStateSeparator = ';';
183 /**
184 * Set this to true to use HTTP BASIC auth for AJAX calls
185 */
186 this.useHttpBasicAuth = false;
187 /**
188 * Decreases the Expiration time of tokens by this number of seconds
189 */
190 this.decreaseExpirationBySec = 0;
191 /**
192 * The interceptors waits this time span if there is no token
193 */
194 this.waitForTokenInMsec = 0;
195 /**
196 * Code Flow is by defauld used together with PKCI which is also higly recommented.
197 * You can disbale it here by setting this flag to true.
198 * https://tools.ietf.org/html/rfc7636#section-1.1
199 */
200 this.disablePKCE = false;
201 /**
202 * Set this to true to preserve the requested route including query parameters after code flow login.
203 * This setting enables deep linking for the code flow.
204 */
205 this.preserveRequestedRoute = false;
206 /**
207 * Allows to disable the timer for the id_token used
208 * for token refresh
209 */
210 this.disableIdTokenTimer = false;
211 /**
212 * Blocks other origins requesting a silent refresh
213 */
214 this.checkOrigin = false;
215 /**
216 * This property allows you to override the method that is used to open the login url,
217 * allowing a way for implementations to specify their own method of routing to new
218 * urls.
219 */
220 this.openUri = (uri) => {
221 location.href = uri;
222 };
223 if (json) {
224 Object.assign(this, json);
225 }
226 }
227}
228//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9saWIvc3JjL2F1dGguY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxVQUFVO0lBeVJyQixZQUFZLElBQTBCO1FBeFJ0Qzs7V0FFRztRQUNJLGFBQVEsR0FBSSxFQUFFLENBQUM7UUFFdEI7O1dBRUc7UUFDSSxnQkFBVyxHQUFJLEVBQUUsQ0FBQztRQUV6Qjs7O1dBR0c7UUFDSSwwQkFBcUIsR0FBSSxFQUFFLENBQUM7UUFFbkM7OztXQUdHO1FBQ0ksK0NBQTBDLEdBQUksSUFBSSxDQUFDO1FBRTFEOzs7V0FHRztRQUNJLGFBQVEsR0FBSSxFQUFFLENBQUM7UUFFdEI7O1dBRUc7UUFDSSxVQUFLLEdBQUksZ0JBQWdCLENBQUM7UUFFMUIsYUFBUSxHQUFJLEVBQUUsQ0FBQztRQUVmLFdBQU0sR0FBSSxFQUFFLENBQUM7UUFFcEI7OztXQUdHO1FBQ0ksU0FBSSxHQUFJLElBQUksQ0FBQztRQUVwQjs7O1dBR0c7UUFDSSx1QkFBa0IsR0FBSSxJQUFJLENBQUM7UUFFM0IsWUFBTyxHQUFTLElBQUksQ0FBQztRQUU1Qjs7V0FFRztRQUNJLFdBQU0sR0FBSSxFQUFFLENBQUM7UUFFcEI7O1dBRUc7UUFDSSxjQUFTLEdBQUksRUFBRSxDQUFDO1FBRXZCOztXQUVHO1FBQ0ksd0JBQW1CLEdBQUksSUFBSSxDQUFDO1FBRW5DOztXQUVHO1FBQ0ksa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFFckM7O1dBRUc7UUFDSSx1QkFBa0IsR0FBWSxJQUFJLENBQUM7UUFFMUM7O1dBRUc7UUFDSSwwQkFBcUIsR0FBYyxFQUFFLENBQUM7UUFFN0M7O1dBRUc7UUFDSSxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFFakMsaUJBQVksR0FBSSxFQUFFLENBQUM7UUFFMUI7Ozs7O1dBS0c7UUFDSSx5QkFBb0IsR0FBSSxLQUFLLENBQUM7UUFFckM7O1dBRUc7UUFDSSw2QkFBd0IsR0FBSSxFQUFFLENBQUM7UUFFL0IsK0JBQTBCLEdBQUksRUFBRSxDQUFDO1FBRXhDOzs7V0FHRztRQUNJLDRCQUF1QixHQUFJLEtBQUssQ0FBQztRQUV4Qzs7OztXQUlHO1FBQ0ksd0JBQW1CLEdBQVksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVoRDs7V0FFRztRQUNJLHlCQUFvQixHQUFZLElBQUksR0FBRyxFQUFFLENBQUM7UUFFakQ7Ozs7Ozs7V0FPRztRQUNJLHNCQUFpQixHQUFZLEVBQUUsQ0FBQztRQUV2Qzs7Ozs7V0FLRztRQUNJLGlCQUFZLEdBQTRCLFlBQVksQ0FBQztRQUU1RDs7O1dBR0c7UUFDSSxzQ0FBaUMsR0FBSSxJQUFJLENBQUM7UUFFakQ7Ozs7V0FJRztRQUNJLFNBQUksR0FBWSxJQUFJLENBQUM7UUFFNUI7OztXQUdHO1FBQ0ksc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBRWxDLDRCQUF1QixHQUFJLDBDQUEwQyxDQUFDO1FBRTdFOzs7O1dBSUc7UUFDSSxrQkFBYSxHQUFJLElBQUksQ0FBQztRQUU3Qjs7OztXQUlHO1FBQ0kseUJBQW9CLEdBQUksS0FBSyxDQUFDO1FBRXJDOzs7V0FHRztRQUNJLDBCQUFxQixHQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFekM7O1dBRUc7UUFDSSwwQkFBcUIsR0FBWSxJQUFJLENBQUM7UUFFN0M7O1dBRUc7UUFDSSwyQkFBc0IsR0FBSSx5Q0FBeUMsQ0FBQztRQUUzRTs7Ozs7O1dBTUc7UUFDSSx1QkFBa0IsR0FBSSxLQUFLLENBQUM7UUFFbkM7OztXQUdHO1FBQ0kscUJBQWdCLEdBQUksS0FBSyxDQUFDO1FBRTFCLG1DQUE4QixHQUFJLEtBQUssQ0FBQztRQUUvQzs7O1dBR0c7UUFDSSxvQkFBZSxHQUFJLEtBQUssQ0FBQztRQVNoQzs7Ozs7V0FLRztRQUNJLHdCQUFtQixHQUFJLEdBQUcsQ0FBQztRQUVsQzs7V0FFRztRQUNJLHFCQUFnQixHQUFJLEtBQUssQ0FBQztRQU9qQzs7V0FFRztRQUNJLDRCQUF1QixHQUFJLENBQUMsQ0FBQztRQUVwQzs7V0FFRztRQUNJLHVCQUFrQixHQUFJLENBQUMsQ0FBQztRQVUvQjs7OztXQUlHO1FBQ0ksZ0JBQVcsR0FBSSxLQUFLLENBQUM7UUFFNUI7OztXQUdHO1FBQ0ksMkJBQXNCLEdBQUksS0FBSyxDQUFDO1FBRXZDOzs7V0FHRztRQUNJLHdCQUFtQixHQUFJLEtBQUssQ0FBQztRQUVwQzs7V0FFRztRQUNJLGdCQUFXLEdBQUksS0FBSyxDQUFDO1FBUTVCOzs7O1dBSUc7UUFDSSxZQUFPLEdBQTJCLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDL0MsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDdEIsQ0FBQyxDQUFDO1FBWkEsSUFBSSxJQUFJLEVBQUU7WUFDUixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7Q0FVRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBBdXRoQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBjbGllbnQncyBpZCBhcyByZWdpc3RlcmVkIHdpdGggdGhlIGF1dGggc2VydmVyXG4gICAqL1xuICBwdWJsaWMgY2xpZW50SWQ/ID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBjbGllbnQncyByZWRpcmVjdFVyaSBhcyByZWdpc3RlcmVkIHdpdGggdGhlIGF1dGggc2VydmVyXG4gICAqL1xuICBwdWJsaWMgcmVkaXJlY3RVcmk/ID0gJyc7XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHNlY29uZCByZWRpcmVjdFVyaSB3aGVyZSB0aGUgYXV0aCBzZXJ2ZXJcbiAgICogcmVkaXJlY3RzIHRoZSB1c2VyIHRvIGFmdGVyIGxvZ2dpbmcgb3V0LlxuICAgKi9cbiAgcHVibGljIHBvc3RMb2dvdXRSZWRpcmVjdFVyaT8gPSAnJztcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGV0aGVyIHRvIHVzZSAncmVkaXJlY3RVcmknIGFzIGEgcmVwbGFjZW1lbnRcbiAgICogb2YgJ3Bvc3RMb2dvdXRSZWRpcmVjdFVyaScgaWYgdGhlIGxhdHRlciBpcyBub3Qgc2V0LlxuICAgKi9cbiAgcHVibGljIHJlZGlyZWN0VXJpQXNQb3N0TG9nb3V0UmVkaXJlY3RVcmlGYWxsYmFjaz8gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgYXV0aCBzZXJ2ZXIncyBlbmRwb2ludCB0aGF0IGFsbG93cyB0byBsb2dcbiAgICogdGhlIHVzZXIgaW4gd2hlbiB1c2luZyBpbXBsaWNpdCBmbG93LlxuICAgKi9cbiAgcHVibGljIGxvZ2luVXJsPyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVxdWVzdGVkIHNjb3Blc1xuICAgKi9cbiAgcHVibGljIHNjb3BlPyA9ICdvcGVuaWQgcHJvZmlsZSc7XG5cbiAgcHVibGljIHJlc291cmNlPyA9ICcnO1xuXG4gIHB1YmxpYyBybmdVcmw/ID0gJyc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hldGhlciB0byB1c2UgT3BlbklkIENvbm5lY3QgZHVyaW5nXG4gICAqIGltcGxpY2l0IGZsb3cuXG4gICAqL1xuICBwdWJsaWMgb2lkYz8gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHdoZXRoZXIgdG8gcmVxdWVzdCBhbiBhY2Nlc3MgdG9rZW4gZHVyaW5nXG4gICAqIGltcGxpY2l0IGZsb3cuXG4gICAqL1xuICBwdWJsaWMgcmVxdWVzdEFjY2Vzc1Rva2VuPyA9IHRydWU7XG5cbiAgcHVibGljIG9wdGlvbnM/OiBhbnkgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgaXNzdWVyJ3MgdXJpLlxuICAgKi9cbiAgcHVibGljIGlzc3Vlcj8gPSAnJztcblxuICAvKipcbiAgICogVGhlIGxvZ291dCB1cmwuXG4gICAqL1xuICBwdWJsaWMgbG9nb3V0VXJsPyA9ICcnO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHdoZXRoZXIgdG8gY2xlYXIgdGhlIGhhc2ggZnJhZ21lbnQgYWZ0ZXIgbG9nZ2luZyBpbi5cbiAgICovXG4gIHB1YmxpYyBjbGVhckhhc2hBZnRlckxvZ2luPyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFVybCBvZiB0aGUgdG9rZW4gZW5kcG9pbnQgYXMgZGVmaW5lZCBieSBPcGVuSWQgQ29ubmVjdCBhbmQgT0F1dGggMi5cbiAgICovXG4gIHB1YmxpYyB0b2tlbkVuZHBvaW50Pzogc3RyaW5nID0gbnVsbDtcblxuICAvKipcbiAgICogVXJsIG9mIHRoZSByZXZvY2F0aW9uIGVuZHBvaW50IGFzIGRlZmluZWQgYnkgT3BlbklkIENvbm5lY3QgYW5kIE9BdXRoIDIuXG4gICAqL1xuICBwdWJsaWMgcmV2b2NhdGlvbkVuZHBvaW50Pzogc3RyaW5nID0gbnVsbDtcblxuICAvKipcbiAgICogTmFtZXMgb2Yga25vd24gcGFyYW1ldGVycyBzZW50IG91dCBpbiB0aGUgVG9rZW5SZXNwb25zZS4gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY3NDkjc2VjdGlvbi01LjFcbiAgICovXG4gIHB1YmxpYyBjdXN0b21Ub2tlblBhcmFtZXRlcnM/OiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBVcmwgb2YgdGhlIHVzZXJpbmZvIGVuZHBvaW50IGFzIGRlZmluZWQgYnkgT3BlbklkIENvbm5lY3QuXG4gICAqL1xuICBwdWJsaWMgdXNlcmluZm9FbmRwb2ludD86IHN0cmluZyA9IG51bGw7XG5cbiAgcHVibGljIHJlc3BvbnNlVHlwZT8gPSAnJztcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGV0aGVyIGFkZGl0aW9uYWwgZGVidWcgaW5mb3JtYXRpb24gc2hvdWxkXG4gICAqIGJlIHNob3duIGF0IHRoZSBjb25zb2xlLiBOb3RlIHRoYXQgaW4gY2VydGFpbiBicm93c2Vyc1xuICAgKiB0aGUgdmVyYm9zaXR5IG9mIHRoZSBjb25zb2xlIG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgc2V0XG4gICAqIHRvIGluY2x1ZGUgRGVidWcgbGV2ZWwgbWVzc2FnZXMuXG4gICAqL1xuICBwdWJsaWMgc2hvd0RlYnVnSW5mb3JtYXRpb24/ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSByZWRpcmVjdCB1cmkgdXNlZCB3aGVuIGRvaW5nIHNpbGVudCByZWZyZXNoLlxuICAgKi9cbiAgcHVibGljIHNpbGVudFJlZnJlc2hSZWRpcmVjdFVyaT8gPSAnJztcblxuICBwdWJsaWMgc2lsZW50UmVmcmVzaE1lc3NhZ2VQcmVmaXg/ID0gJyc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUgdG8gZGlzcGxheSB0aGUgaWZyYW1lIHVzZWQgZm9yXG4gICAqIHNpbGVudCByZWZyZXNoIGZvciBkZWJ1Z2dpbmcuXG4gICAqL1xuICBwdWJsaWMgc2lsZW50UmVmcmVzaFNob3dJRnJhbWU/ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgZm9yIHNpbGVudCByZWZyZXNoLlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHNpbGVudFJlZnJlc2hUaW1lb3V0XG4gICAqL1xuICBwdWJsaWMgc2lsZXRSZWZyZXNoVGltZW91dD86IG51bWJlciA9IDEwMDAgKiAyMDtcblxuICAvKipcbiAgICogVGltZW91dCBmb3Igc2lsZW50IHJlZnJlc2guXG4gICAqL1xuICBwdWJsaWMgc2lsZW50UmVmcmVzaFRpbWVvdXQ/OiBudW1iZXIgPSAxMDAwICogMjA7XG5cbiAgLyoqXG4gICAqIFNvbWUgYXV0aCBzZXJ2ZXJzIGRvbid0IGFsbG93IHVzaW5nIHBhc3N3b3JkIGZsb3dcbiAgICogdy9vIGEgY2xpZW50IHNlY3JldCB3aGlsZSB0aGUgc3RhbmRhcmRzIGRvIG5vdFxuICAgKiBkZW1hbmQgZm9yIGl0LiBJbiB0aGlzIGNhc2UsIHlvdSBjYW4gc2V0IGEgcGFzc3dvcmRcbiAgICogaGVyZS4gQXMgdGhpcyBwYXNzd29yZCBpcyBleHBvc2VkIHRvIHRoZSBwdWJsaWNcbiAgICogaXQgZG9lcyBub3QgYnJpbmcgYWRkaXRpb25hbCBzZWN1cml0eSBhbmQgaXMgdGhlcmVmb3JlXG4gICAqIGFzIGdvb2QgYXMgdXNpbmcgbm8gcGFzc3dvcmQuXG4gICAqL1xuICBwdWJsaWMgZHVtbXlDbGllbnRTZWNyZXQ/OiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGV0aGVyIGh0dHBzIGlzIHJlcXVpcmVkLlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyByZW1vdGVPbmx5IHdoaWNoIG9ubHkgYWxsb3dzXG4gICAqIGh0dHAgZm9yIGxvY2FsaG9zdCwgd2hpbGUgZXZlcnkgb3RoZXIgZG9tYWlucyBuZWVkXG4gICAqIHRvIGJlIHVzZWQgd2l0aCBodHRwcy5cbiAgICovXG4gIHB1YmxpYyByZXF1aXJlSHR0cHM/OiBib29sZWFuIHwgJ3JlbW90ZU9ubHknID0gJ3JlbW90ZU9ubHknO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHdoZXRoZXIgZXZlcnkgdXJsIHByb3ZpZGVkIGJ5IHRoZSBkaXNjb3ZlcnlcbiAgICogZG9jdW1lbnQgaGFzIHRvIHN0YXJ0IHdpdGggdGhlIGlzc3VlcidzIHVybC5cbiAgICovXG4gIHB1YmxpYyBzdHJpY3REaXNjb3ZlcnlEb2N1bWVudFZhbGlkYXRpb24/ID0gdHJ1ZTtcblxuICAvKipcbiAgICogSlNPTiBXZWIgS2V5IFNldCAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc1MTcpXG4gICAqIHdpdGgga2V5cyB1c2VkIHRvIHZhbGlkYXRlIHJlY2VpdmVkIGlkX3Rva2Vucy5cbiAgICogVGhpcyBpcyB0YWtlbiBvdXQgb2YgdGhlIGRpc292ZXJ5IGRvY3VtZW50LiBDYW4gYmUgc2V0IG1hbnVhbGx5IHRvby5cbiAgICovXG4gIHB1YmxpYyBqd2tzPzogb2JqZWN0ID0gbnVsbDtcblxuICAvKipcbiAgICogTWFwIHdpdGggYWRkaXRpb25hbCBxdWVyeSBwYXJhbWV0ZXIgdGhhdCBhcmUgYXBwZW5kZWQgdG9cbiAgICogdGhlIHJlcXVlc3Qgd2hlbiBpbml0aWFsaXppbmcgaW1wbGljaXQgZmxvdy5cbiAgICovXG4gIHB1YmxpYyBjdXN0b21RdWVyeVBhcmFtcz86IG9iamVjdCA9IG51bGw7XG5cbiAgcHVibGljIHNpbGVudFJlZnJlc2hJRnJhbWVOYW1lPyA9ICdhbmd1bGFyLW9hdXRoLW9pZGMtc2lsZW50LXJlZnJlc2gtaWZyYW1lJztcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGVuIHRoZSB0b2tlbl90aW1lb3V0IGV2ZW50IHNob3VsZCBiZSByYWlzZWQuXG4gICAqIElmIHlvdSBzZXQgdGhpcyB0byB0aGUgZGVmYXVsdCB2YWx1ZSAwLjc1LCB0aGUgZXZlbnRcbiAgICogaXMgdHJpZ2dlcmVkIGFmdGVyIDc1JSBvZiB0aGUgdG9rZW4ncyBsaWZlIHRpbWUuXG4gICAqL1xuICBwdWJsaWMgdGltZW91dEZhY3Rvcj8gPSAwLjc1O1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgbGliIHdpbGwgdHJ5IHRvIGNoZWNrIHdoZXRoZXIgdGhlIHVzZXJcbiAgICogaXMgc3RpbGwgbG9nZ2VkIGluIG9uIGEgcmVndWxhciBiYXNpcyBhcyBkZXNjcmliZWRcbiAgICogaW4gaHR0cDovL29wZW5pZC5uZXQvc3BlY3Mvb3BlbmlkLWNvbm5lY3Qtc2Vzc2lvbi0xXzAuaHRtbCNDaGFuZ2VOb3RpZmljYXRpb25cbiAgICovXG4gIHB1YmxpYyBzZXNzaW9uQ2hlY2tzRW5hYmxlZD8gPSBmYWxzZTtcblxuICAvKipcbiAgICogSW50ZXJ2YWwgaW4gbXNlYyBmb3IgY2hlY2tpbmcgdGhlIHNlc3Npb25cbiAgICogYWNjb3JkaW5nIHRvIGh0dHA6Ly9vcGVuaWQubmV0L3NwZWNzL29wZW5pZC1jb25uZWN0LXNlc3Npb24tMV8wLmh0bWwjQ2hhbmdlTm90aWZpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgc2Vzc2lvbkNoZWNrSW50ZXJ2YWxsPyA9IDMgKiAxMDAwO1xuXG4gIC8qKlxuICAgKiBVcmwgZm9yIHRoZSBpZnJhbWUgdXNlZCBmb3Igc2Vzc2lvbiBjaGVja3NcbiAgICovXG4gIHB1YmxpYyBzZXNzaW9uQ2hlY2tJRnJhbWVVcmw/OiBzdHJpbmcgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBpZnJhbWUgdG8gdXNlIGZvciBzZXNzaW9uIGNoZWNrc1xuICAgKi9cbiAgcHVibGljIHNlc3Npb25DaGVja0lGcmFtZU5hbWU/ID0gJ2FuZ3VsYXItb2F1dGgtb2lkYy1jaGVjay1zZXNzaW9uLWlmcmFtZSc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgaGFzIGJlZW4gaW50cm9kdWNlZCB0byBkaXNhYmxlIGF0X2hhc2ggY2hlY2tzXG4gICAqIGFuZCBpcyBpbmRlbnRlZCBmb3IgSWRlbnRpdHkgUHJvdmlkZXIgdGhhdCBkb2VzIG5vdCBkZWxpdmVyXG4gICAqIGFuIGF0X2hhc2ggRVZFTiBUSE9VR0ggaXRzIHJlY29tbWVuZGVkIGJ5IHRoZSBPSURDIHNwZWNzLlxuICAgKiBPZiBjb3Vyc2UsIHdoZW4gZGlzYWJsaW5nIHRoZXNlIGNoZWNrcyB0aGVuIHdlIGFyZSBieXBhc3NpbmdcbiAgICogYSBzZWN1cml0eSBjaGVjayB3aGljaCBtZWFucyB3ZSBhcmUgbW9yZSB2dWxuZXJhYmxlLlxuICAgKi9cbiAgcHVibGljIGRpc2FibGVBdEhhc2hDaGVjaz8gPSBmYWxzZTtcblxuICAvKipcbiAgICogRGVmaW5lcyB3ZXRoZXIgdG8gY2hlY2sgdGhlIHN1YmplY3Qgb2YgYSByZWZyZXNoZWQgdG9rZW4gYWZ0ZXIgc2lsZW50IHJlZnJlc2guXG4gICAqIE5vcm1hbGx5LCBpdCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgYmVmb3JlLlxuICAgKi9cbiAgcHVibGljIHNraXBTdWJqZWN0Q2hlY2s/ID0gZmFsc2U7XG5cbiAgcHVibGljIHVzZUlkVG9rZW5IaW50Rm9yU2lsZW50UmVmcmVzaD8gPSBmYWxzZTtcblxuICAvKipcbiAgICogRGVmaW5lZCB3aGV0aGVyIHRvIHNraXAgdGhlIHZhbGlkYXRpb24gb2YgdGhlIGlzc3VlciBpbiB0aGUgZGlzY292ZXJ5IGRvY3VtZW50LlxuICAgKiBOb3JtYWxseSwgdGhlIGRpc2NvdmV5IGRvY3VtZW50J3MgdXJsIHN0YXJ0cyB3aXRoIHRoZSB1cmwgb2YgdGhlIGlzc3Vlci5cbiAgICovXG4gIHB1YmxpYyBza2lwSXNzdWVyQ2hlY2s/ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFjY29yZGluZyB0byByZmM2NzQ5IGl0IGlzIHJlY29tbWVuZGVkIChidXQgbm90IHJlcXVpcmVkKSB0aGF0IHRoZSBhdXRoXG4gICAqIHNlcnZlciBleHBvc2VzIHRoZSBhY2Nlc3NfdG9rZW4ncyBsaWZlIHRpbWUgaW4gc2Vjb25kcy5cbiAgICogVGhpcyBpcyBhIGZhbGxiYWNrIHZhbHVlIGZvciB0aGUgY2FzZSB0aGlzIHZhbHVlIGlzIG5vdCBleHBvc2VkLlxuICAgKi9cbiAgcHVibGljIGZhbGxiYWNrQWNjZXNzVG9rZW5FeHBpcmF0aW9uVGltZUluU2VjPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBmaW5hbCBzdGF0ZSBzZW50IHRvIGlzc3VlciBpcyBidWlsdCBhcyBmb2xsb3dzOlxuICAgKiBzdGF0ZSA9IG5vbmNlICsgbm9uY2VTdGF0ZVNlcGFyYXRvciArIGFkZGl0aW9uYWwgc3RhdGVcbiAgICogRGVmYXVsdCBzZXBhcmF0b3IgaXMgJzsnIChlbmNvZGVkICUzQikuXG4gICAqIEluIHJhcmUgY2FzZXMsIHRoaXMgY2hhcmFjdGVyIG1pZ2h0IGJlIGZvcmJpZGRlbiBvciBpbmNvbnZlbmllbnQgdG8gdXNlIGJ5IHRoZSBpc3N1ZXIgc28gaXQgY2FuIGJlIGN1c3RvbWl6ZWQuXG4gICAqL1xuICBwdWJsaWMgbm9uY2VTdGF0ZVNlcGFyYXRvcj8gPSAnOyc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUgdG8gdXNlIEhUVFAgQkFTSUMgYXV0aCBmb3IgQUpBWCBjYWxsc1xuICAgKi9cbiAgcHVibGljIHVzZUh0dHBCYXNpY0F1dGg/ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB3aW5kb3cgb2YgdGltZSAoaW4gc2Vjb25kcykgdG8gYWxsb3cgdGhlIGN1cnJlbnQgdGltZSB0byBkZXZpYXRlIHdoZW4gdmFsaWRhdGluZyBpZF90b2tlbidzIGlhdCBhbmQgZXhwIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBjbG9ja1NrZXdJblNlYz86IG51bWJlcjtcblxuICAvKipcbiAgICogRGVjcmVhc2VzIHRoZSBFeHBpcmF0aW9uIHRpbWUgb2YgdG9rZW5zIGJ5IHRoaXMgbnVtYmVyIG9mIHNlY29uZHNcbiAgICovXG4gIHB1YmxpYyBkZWNyZWFzZUV4cGlyYXRpb25CeVNlYz8gPSAwO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJjZXB0b3JzIHdhaXRzIHRoaXMgdGltZSBzcGFuIGlmIHRoZXJlIGlzIG5vIHRva2VuXG4gICAqL1xuICBwdWJsaWMgd2FpdEZvclRva2VuSW5Nc2VjPyA9IDA7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUgaWYgeW91IHdhbnQgdG8gdXNlIHNpbGVudCByZWZyZXNoIHRvZ2V0aGVyIHdpdGhcbiAgICogY29kZSBmbG93LiBBcyBzaWxlbnQgcmVmcmVzaCBpcyB0aGUgb25seSBvcHRpb24gZm9yIHJlZnJlc2hpbmdcbiAgICogd2l0aCBpbXBsaWNpdCBmbG93LCB5b3UgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IHR1cm4gaXQgb24gaW5cbiAgICogdGhpcyBjYXNlLlxuICAgKi9cbiAgcHVibGljIHVzZVNpbGVudFJlZnJlc2g/O1xuXG4gIC8qKlxuICAgKiBDb2RlIEZsb3cgaXMgYnkgZGVmYXVsZCB1c2VkIHRvZ2V0aGVyIHdpdGggUEtDSSB3aGljaCBpcyBhbHNvIGhpZ2x5IHJlY29tbWVudGVkLlxuICAgKiBZb3UgY2FuIGRpc2JhbGUgaXQgaGVyZSBieSBzZXR0aW5nIHRoaXMgZmxhZyB0byB0cnVlLlxuICAgKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzYzNiNzZWN0aW9uLTEuMVxuICAgKi9cbiAgcHVibGljIGRpc2FibGVQS0NFPyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0byB0cnVlIHRvIHByZXNlcnZlIHRoZSByZXF1ZXN0ZWQgcm91dGUgaW5jbHVkaW5nIHF1ZXJ5IHBhcmFtZXRlcnMgYWZ0ZXIgY29kZSBmbG93IGxvZ2luLlxuICAgKiBUaGlzIHNldHRpbmcgZW5hYmxlcyBkZWVwIGxpbmtpbmcgZm9yIHRoZSBjb2RlIGZsb3cuXG4gICAqL1xuICBwdWJsaWMgcHJlc2VydmVSZXF1ZXN0ZWRSb3V0ZT8gPSBmYWxzZTtcblxuICAvKipcbiAgICogQWxsb3dzIHRvIGRpc2FibGUgdGhlIHRpbWVyIGZvciB0aGUgaWRfdG9rZW4gdXNlZFxuICAgKiBmb3IgdG9rZW4gcmVmcmVzaFxuICAgKi9cbiAgcHVibGljIGRpc2FibGVJZFRva2VuVGltZXI/ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEJsb2NrcyBvdGhlciBvcmlnaW5zIHJlcXVlc3RpbmcgYSBzaWxlbnQgcmVmcmVzaFxuICAgKi9cbiAgcHVibGljIGNoZWNrT3JpZ2luPyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGpzb24/OiBQYXJ0aWFsPEF1dGhDb25maWc+KSB7XG4gICAgaWYgKGpzb24pIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcywganNvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBvdmVycmlkZSB0aGUgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBvcGVuIHRoZSBsb2dpbiB1cmwsXG4gICAqIGFsbG93aW5nIGEgd2F5IGZvciBpbXBsZW1lbnRhdGlvbnMgdG8gc3BlY2lmeSB0aGVpciBvd24gbWV0aG9kIG9mIHJvdXRpbmcgdG8gbmV3XG4gICAqIHVybHMuXG4gICAqL1xuICBwdWJsaWMgb3BlblVyaT86ICh1cmk6IHN0cmluZykgPT4gdm9pZCA9ICh1cmkpID0+IHtcbiAgICBsb2NhdGlvbi5ocmVmID0gdXJpO1xuICB9O1xufVxuIl19
\No newline at end of file