valtech-components 2.0.475 → 2.0.477
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/esm2022/lib/services/auth/auth.service.mjs +199 -6
- package/esm2022/lib/services/auth/config.mjs +2 -1
- package/esm2022/lib/services/auth/index.mjs +19 -3
- package/esm2022/lib/services/auth/types.mjs +1 -1
- package/esm2022/lib/services/firebase/messaging.service.mjs +29 -17
- package/fesm2022/valtech-components.mjs +244 -22
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/services/auth/auth.service.d.ts +62 -5
- package/lib/services/auth/index.d.ts +18 -2
- package/lib/services/auth/types.d.ts +57 -0
- package/lib/services/firebase/messaging.service.d.ts +9 -5
- package/package.json +1 -1
|
@@ -26,4 +26,4 @@ export const INITIAL_MFA_STATE = {
|
|
|
26
26
|
mfaToken: null,
|
|
27
27
|
method: null,
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2F1dGgvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBcUZIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQWM7SUFDM0MsZUFBZSxFQUFFLEtBQUs7SUFDdEIsU0FBUyxFQUFFLElBQUk7SUFDZixXQUFXLEVBQUUsSUFBSTtJQUNqQixZQUFZLEVBQUUsSUFBSTtJQUNsQixNQUFNLEVBQUUsSUFBSTtJQUNaLEtBQUssRUFBRSxJQUFJO0lBQ1gsS0FBSyxFQUFFLEVBQUU7SUFDVCxXQUFXLEVBQUUsRUFBRTtJQUNmLFlBQVksRUFBRSxLQUFLO0lBQ25CLFNBQVMsRUFBRSxJQUFJO0lBQ2YsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBa0JGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQW9CO0lBQ2hELFFBQVEsRUFBRSxLQUFLO0lBQ2YsUUFBUSxFQUFFLElBQUk7SUFDZCxNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRpcG9zIGUgaW50ZXJmYWNlcyBwYXJhIGVsIHNlcnZpY2lvIGRlIGF1dGVudGljYWNpw7NuIGRlIFZhbHRlY2guXG4gKiBBbGluZWFkb3MgY29uIGVsIGJhY2tlbmQgQXV0aFYyLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05GSUdVUkFDScOTTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBwYXJhIGVsIHNlcnZpY2lvIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbHRlY2hBdXRoQ29uZmlnIHtcbiAgLyoqIFVSTCBiYXNlIGRlIGxhIEFQSSAoZWo6ICdodHRwczovL2FwaS5teXZhbHRlY2guY29tJykgKi9cbiAgYXBpVXJsOiBzdHJpbmc7XG4gIC8qKiBQcmVmaWpvIHBhcmEgZW5kcG9pbnRzIGRlIGF1dGggKGRlZmF1bHQ6ICcvdjIvYXV0aCcpICovXG4gIGF1dGhQcmVmaXg/OiBzdHJpbmc7XG4gIC8qKiBQcmVmaWpvIHBhcmEgbGFzIGNsYXZlcyBkZSBsb2NhbFN0b3JhZ2UgKGRlZmF1bHQ6ICd2YWx0ZWNoX2F1dGhfJykgKi9cbiAgc3RvcmFnZVByZWZpeD86IHN0cmluZztcbiAgLyoqIFRpZW1wbyBhbnRlcyBkZSBleHBpcmFjacOzbiBwYXJhIHJlZnJlc2NhciB0b2tlbiBlbiBzZWd1bmRvcyAoZGVmYXVsdDogNjApICovXG4gIHJlZnJlc2hCZWZvcmVFeHBpcnk/OiBudW1iZXI7XG4gIC8qKiBIYWJpbGl0YXIgc2luY3Jvbml6YWNpw7NuIGVudHJlIHBlc3Rhw7FhcyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgZW5hYmxlVGFiU3luYz86IGJvb2xlYW47XG4gIC8qKiBSdXRhIGRlIHJlZGlyZWNjacOzbiBjdWFuZG8gbm8gYXV0ZW50aWNhZG8gKGRlZmF1bHQ6ICcvbG9naW4nKSAqL1xuICBsb2dpblJvdXRlPzogc3RyaW5nO1xuICAvKiogUnV0YSBkZSByZWRpcmVjY2nDs24gY3VhbmRvIHlhIGF1dGVudGljYWRvIChkZWZhdWx0OiAnLycpICovXG4gIGhvbWVSb3V0ZT86IHN0cmluZztcbiAgLyoqIFJ1dGEgcGFyYSBhY2Nlc28gZGVuZWdhZG8gKGRlZmF1bHQ6ICcvdW5hdXRob3JpemVkJykgKi9cbiAgdW5hdXRob3JpemVkUm91dGU/OiBzdHJpbmc7XG4gIC8qKiBIYWJpbGl0YXIgaW50ZWdyYWNpw7NuIGNvbiBGaXJlYmFzZVNlcnZpY2UgKGRlZmF1bHQ6IGZhbHNlKSAqL1xuICBlbmFibGVGaXJlYmFzZUludGVncmF0aW9uPzogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVTVEFETyBERSBBVVRFTlRJQ0FDScOTTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFc3RhZG8gY29tcGxldG8gZGUgYXV0ZW50aWNhY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFN0YXRlIHtcbiAgLyoqIFVzdWFyaW8gZXN0w6EgYXV0ZW50aWNhZG8gKi9cbiAgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xuICAvKiogRXN0YWRvIGRlIGNhcmdhIGluaWNpYWwgKi9cbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICAvKiogVG9rZW4gZGUgYWNjZXNvIGFjdHVhbCAqL1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFRva2VuIGRlIHJlZnJlc2NvIGFjdHVhbCAqL1xuICByZWZyZXNoVG9rZW46IHN0cmluZyB8IG51bGw7XG4gIC8qKiBJRCBkZWwgdXN1YXJpbyAqL1xuICB1c2VySWQ6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBFbWFpbCBkZWwgdXN1YXJpbyAqL1xuICBlbWFpbDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFJvbGVzIGRlbCB1c3VhcmlvICovXG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgLyoqIFBlcm1pc29zIGRlbCB1c3VhcmlvIChmb3JtYXRvICdyZXNvdXJjZTphY3Rpb24nKSAqL1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gIC8qKiBVc3VhcmlvIGVzIHN1cGVyIGFkbWluICovXG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgLyoqIFRpbWVzdGFtcCBkZSBleHBpcmFjacOzbiBkZWwgYWNjZXNzVG9rZW4gKG1zKSAqL1xuICBleHBpcmVzQXQ6IG51bWJlciB8IG51bGw7XG4gIC8qKiBFcnJvciBkZSBhdXRlbnRpY2FjacOzbiAoc2kgZXhpc3RlKSAqL1xuICBlcnJvcjogQXV0aEVycm9yIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBJbmZvcm1hY2nDs24gZGVsIHVzdWFyaW8gYXV0ZW50aWNhZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFVzZXIge1xuICB1c2VySWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBpc1N1cGVyQWRtaW46IGJvb2xlYW47XG4gIG1mYUVuYWJsZWQ/OiBib29sZWFuO1xuICBtZmFNZXRob2Q/OiBNRkFNZXRob2Q7XG59XG5cbi8qKlxuICogRXJyb3IgZGUgYXV0ZW50aWNhY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEVycm9yIHtcbiAgY29kZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXN0YWRvIGluaWNpYWwgZGUgYXV0ZW50aWNhY2nDs24uXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX0FVVEhfU1RBVEU6IEF1dGhTdGF0ZSA9IHtcbiAgaXNBdXRoZW50aWNhdGVkOiBmYWxzZSxcbiAgaXNMb2FkaW5nOiB0cnVlLFxuICBhY2Nlc3NUb2tlbjogbnVsbCxcbiAgcmVmcmVzaFRva2VuOiBudWxsLFxuICB1c2VySWQ6IG51bGwsXG4gIGVtYWlsOiBudWxsLFxuICByb2xlczogW10sXG4gIHBlcm1pc3Npb25zOiBbXSxcbiAgaXNTdXBlckFkbWluOiBmYWxzZSxcbiAgZXhwaXJlc0F0OiBudWxsLFxuICBlcnJvcjogbnVsbCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRkFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBNw6l0b2RvcyBkZSBNRkEgc29wb3J0YWRvcyAqL1xuZXhwb3J0IHR5cGUgTUZBTWV0aG9kID0gJ0VNQUlMJyB8ICdTTVMnO1xuXG4vKipcbiAqIEVzdGFkbyBkZSBNRkEgcGVuZGllbnRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVBlbmRpbmdTdGF0ZSB7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBtZmFUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgbWV0aG9kOiBNRkFNZXRob2QgfCBudWxsO1xufVxuXG4vKipcbiAqIEVzdGFkbyBpbmljaWFsIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUZBX1NUQVRFOiBNRkFQZW5kaW5nU3RhdGUgPSB7XG4gIHJlcXVpcmVkOiBmYWxzZSxcbiAgbWZhVG9rZW46IG51bGwsXG4gIG1ldGhvZDogbnVsbCxcbn07XG5cbi8qKlxuICogUmVzdWx0YWRvIGRlIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlc3VsdCB7XG4gIGNvZGVTZW50OiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXN0YWRvIGRlIE1GQSBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTdGF0dXMge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBtZXRob2Q6IE1GQU1ldGhvZCB8IG51bGw7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVFVRVNUUy9SRVNQT05TRVMgKGFsaW5lYWRvcyBjb24gYmFja2VuZCBBdXRoVjIpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBzaWdudXAgKHJlZ2lzdHJvKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWdudXBSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBwaG9uZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBzaWdudXAgKHJlZ2lzdHJvKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWdudXBSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHZlcmlmaWNhciBlbWFpbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJpZnlFbWFpbFJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgdmVyaWZpY2FjacOzbiBkZSBlbWFpbC5cbiAqIFNpIGVzIGV4aXRvc28sIGluY2x1eWUgdG9rZW5zIHBhcmEgYXV0by1sb2dpbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJpZnlFbWFpbFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdmVyaWZpZWQ6IGJvb2xlYW47XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbj86IG51bWJlcjtcbiAgdG9rZW5UeXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZWVudmlhciBjw7NkaWdvIGRlIHZlcmlmaWNhY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZW5kQ29kZVJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICB0eXBlOiAnRU1BSUxfVkVSSUZZJyB8ICdQQVNTV09SRF9SRVNFVCc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgcmVlbnbDrW8gZGUgY8OzZGlnby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNlbmRDb2RlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzZW50OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBzaWduaW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmluUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgc2lnbmluLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25pblJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbj86IHN0cmluZztcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgZXhwaXJlc0luPzogbnVtYmVyO1xuICB0b2tlblR5cGU/OiBzdHJpbmc7XG4gIG1mYVJlcXVpcmVkPzogYm9vbGVhbjtcbiAgbWZhVG9rZW4/OiBzdHJpbmc7XG4gIG1mYU1ldGhvZD86IE1GQU1ldGhvZDtcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgdmVyaWZpY2FyIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFWZXJpZnlSZXF1ZXN0IHtcbiAgbWZhVG9rZW46IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhciBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBVmVyaWZ5UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgZXhwaXJlc0luOiBudW1iZXI7XG4gIHRva2VuVHlwZTogc3RyaW5nO1xuICByb2xlcz86IHN0cmluZ1tdO1xuICBwZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZWZyZXNjYXIgdG9rZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFJlcXVlc3Qge1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWZyZXNjYXIgdG9rZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgZXhwaXJlc0luOiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGxvZ291dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dvdXRSZXF1ZXN0IHtcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgbG9nb3V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ291dFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBvYnRlbmVyIHBlcm1pc29zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldFBlcm1pc3Npb25zUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICByb2xlczogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgaXNTdXBlckFkbWluOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBzZXR1cCBkZSBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBU2V0dXBSZXF1ZXN0IHtcbiAgbWV0aG9kOiBNRkFNZXRob2Q7XG4gIHBob25lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgY29kZVNlbnQ6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgY29uZmlybWFyIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFDb25maXJtUmVxdWVzdCB7XG4gIGNvZGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBjb25maXJtYXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQUNvbmZpcm1SZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIG1mYUVuYWJsZWQ6IGJvb2xlYW47XG4gIG1ldGhvZDogTUZBTWV0aG9kO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBkZXNoYWJpbGl0YXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQURpc2FibGVSZXF1ZXN0IHtcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBkZXNoYWJpbGl0YXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQURpc2FibGVSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIG1mYURpc2FibGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBpbmljaWFyIHJlY3VwZXJhY2nDs24gZGUgY29udHJhc2XDsWEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9yZ290UGFzc3dvcmRSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBmb3Jnb3QgcGFzc3dvcmQgKHNpZW1wcmUgaWd1YWwgcG9yIHNlZ3VyaWRhZCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9yZ290UGFzc3dvcmRSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgcmVzZXRlYXIgY29udHJhc2XDsWEgY29uIGPDs2RpZ28uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRQYXNzd29yZFJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG4gIG5ld1Bhc3N3b3JkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgcmVzZXQgcGFzc3dvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBvYnRlbmVyIHBlcmZpbCBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRQcm9maWxlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBwaG9uZT86IHN0cmluZztcbiAgZW1haWxWZXJpZmllZDogYm9vbGVhbjtcbiAgcGhvbmVWZXJpZmllZDogYm9vbGVhbjtcbiAgbWZhRW5hYmxlZDogYm9vbGVhbjtcbiAgbWZhTWV0aG9kPzogTUZBTWV0aG9kO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGFjdHVhbGl6YXIgcGVyZmlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVByb2ZpbGVSZXF1ZXN0IHtcbiAgbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgYWN0dWFsaXphciBwZXJmaWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUHJvZmlsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdXBkYXRlZDogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVWRU5UT1MgREUgU0lOQ1JPTklaQUNJw5NOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1dJVENIIE9SR0FOSVpBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgY2FtYmlhciBkZSBvcmdhbml6YWNpw7NuIGFjdGl2YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hPcmdSZXF1ZXN0IHtcbiAgb3JnYW5pemF0aW9uSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBjYW1iaW8gZGUgb3JnYW5pemFjacOzbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hPcmdSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW46IHN0cmluZztcbiAgYWN0aXZlT3JnOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFVkVOVE9TIERFIFNJTkNST05JWkFDScOTTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIFRpcG9zIGRlIGV2ZW50b3MgZGUgc2luY3Jvbml6YWNpw7NuIGVudHJlIHBlc3Rhw7FhcyAqL1xuZXhwb3J0IHR5cGUgQXV0aFN5bmNFdmVudFR5cGUgPVxuICB8ICdMT0dJTidcbiAgfCAnTE9HT1VUJ1xuICB8ICdUT0tFTl9SRUZSRVNIJ1xuICB8ICdQRVJNSVNTSU9OU19VUERBVEUnXG4gIHwgJ09SR19TV0lUQ0gnO1xuXG4vKipcbiAqIEV2ZW50byBkZSBzaW5jcm9uaXphY2nDs24gZW50cmUgcGVzdGHDsWFzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhTeW5jRXZlbnQge1xuICB0eXBlOiBBdXRoU3luY0V2ZW50VHlwZTtcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIHBheWxvYWQ/OiB7XG4gICAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gICAgZXhwaXJlc0F0PzogbnVtYmVyO1xuICAgIGFjdGl2ZU9yZz86IHN0cmluZztcbiAgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEpXVCBDTEFJTVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ2xhaW1zIGRlbCBKV1QgZGUgYWNjZXNvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpXVENsYWltcyB7XG4gIC8qKiBVc2VyIElEICovXG4gIHVpZDogc3RyaW5nO1xuICAvKiogRW1haWwgKi9cbiAgZW1haWw6IHN0cmluZztcbiAgLyoqIFNlc3Npb24gSUQgKi9cbiAgc2lkPzogc3RyaW5nO1xuICAvKiogSXNzdWVkIGF0ICovXG4gIGlhdDogbnVtYmVyO1xuICAvKiogRXhwaXJhdGlvbiAqL1xuICBleHA6IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUT1JBR0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRGF0b3MgcGVyc2lzdGlkb3MgZW4gc3RvcmFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yZWRBdXRoU3RhdGUge1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgcm9sZXM6IHN0cmluZ1tdO1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgZXhwaXJlc0F0PzogbnVtYmVyO1xufVxuIl19
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2F1dGgvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBdUZIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQWM7SUFDM0MsZUFBZSxFQUFFLEtBQUs7SUFDdEIsU0FBUyxFQUFFLElBQUk7SUFDZixXQUFXLEVBQUUsSUFBSTtJQUNqQixZQUFZLEVBQUUsSUFBSTtJQUNsQixNQUFNLEVBQUUsSUFBSTtJQUNaLEtBQUssRUFBRSxJQUFJO0lBQ1gsS0FBSyxFQUFFLEVBQUU7SUFDVCxXQUFXLEVBQUUsRUFBRTtJQUNmLFlBQVksRUFBRSxLQUFLO0lBQ25CLFNBQVMsRUFBRSxJQUFJO0lBQ2YsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBa0JGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQW9CO0lBQ2hELFFBQVEsRUFBRSxLQUFLO0lBQ2YsUUFBUSxFQUFFLElBQUk7SUFDZCxNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRpcG9zIGUgaW50ZXJmYWNlcyBwYXJhIGVsIHNlcnZpY2lvIGRlIGF1dGVudGljYWNpw7NuIGRlIFZhbHRlY2guXG4gKiBBbGluZWFkb3MgY29uIGVsIGJhY2tlbmQgQXV0aFYyLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05GSUdVUkFDScOTTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBwYXJhIGVsIHNlcnZpY2lvIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbHRlY2hBdXRoQ29uZmlnIHtcbiAgLyoqIFVSTCBiYXNlIGRlIGxhIEFQSSAoZWo6ICdodHRwczovL2FwaS5teXZhbHRlY2guY29tJykgKi9cbiAgYXBpVXJsOiBzdHJpbmc7XG4gIC8qKiBQcmVmaWpvIHBhcmEgZW5kcG9pbnRzIGRlIGF1dGggKGRlZmF1bHQ6ICcvdjIvYXV0aCcpICovXG4gIGF1dGhQcmVmaXg/OiBzdHJpbmc7XG4gIC8qKiBQcmVmaWpvIHBhcmEgbGFzIGNsYXZlcyBkZSBsb2NhbFN0b3JhZ2UgKGRlZmF1bHQ6ICd2YWx0ZWNoX2F1dGhfJykgKi9cbiAgc3RvcmFnZVByZWZpeD86IHN0cmluZztcbiAgLyoqIFRpZW1wbyBhbnRlcyBkZSBleHBpcmFjacOzbiBwYXJhIHJlZnJlc2NhciB0b2tlbiBlbiBzZWd1bmRvcyAoZGVmYXVsdDogNjApICovXG4gIHJlZnJlc2hCZWZvcmVFeHBpcnk/OiBudW1iZXI7XG4gIC8qKiBIYWJpbGl0YXIgc2luY3Jvbml6YWNpw7NuIGVudHJlIHBlc3Rhw7FhcyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgZW5hYmxlVGFiU3luYz86IGJvb2xlYW47XG4gIC8qKiBSdXRhIGRlIHJlZGlyZWNjacOzbiBjdWFuZG8gbm8gYXV0ZW50aWNhZG8gKGRlZmF1bHQ6ICcvbG9naW4nKSAqL1xuICBsb2dpblJvdXRlPzogc3RyaW5nO1xuICAvKiogUnV0YSBkZSByZWRpcmVjY2nDs24gY3VhbmRvIHlhIGF1dGVudGljYWRvIChkZWZhdWx0OiAnLycpICovXG4gIGhvbWVSb3V0ZT86IHN0cmluZztcbiAgLyoqIFJ1dGEgcGFyYSBhY2Nlc28gZGVuZWdhZG8gKGRlZmF1bHQ6ICcvdW5hdXRob3JpemVkJykgKi9cbiAgdW5hdXRob3JpemVkUm91dGU/OiBzdHJpbmc7XG4gIC8qKiBIYWJpbGl0YXIgaW50ZWdyYWNpw7NuIGNvbiBGaXJlYmFzZVNlcnZpY2UgKGRlZmF1bHQ6IGZhbHNlKSAqL1xuICBlbmFibGVGaXJlYmFzZUludGVncmF0aW9uPzogYm9vbGVhbjtcbiAgLyoqIEhhYmlsaXRhciByZWdpc3RybyBhdXRvbcOhdGljbyBkZSBkZXZpY2UgdG9rZW5zIHBhcmEgcHVzaCBub3RpZmljYXRpb25zIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgZW5hYmxlRGV2aWNlUmVnaXN0cmF0aW9uPzogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVTVEFETyBERSBBVVRFTlRJQ0FDScOTTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFc3RhZG8gY29tcGxldG8gZGUgYXV0ZW50aWNhY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFN0YXRlIHtcbiAgLyoqIFVzdWFyaW8gZXN0w6EgYXV0ZW50aWNhZG8gKi9cbiAgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xuICAvKiogRXN0YWRvIGRlIGNhcmdhIGluaWNpYWwgKi9cbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICAvKiogVG9rZW4gZGUgYWNjZXNvIGFjdHVhbCAqL1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFRva2VuIGRlIHJlZnJlc2NvIGFjdHVhbCAqL1xuICByZWZyZXNoVG9rZW46IHN0cmluZyB8IG51bGw7XG4gIC8qKiBJRCBkZWwgdXN1YXJpbyAqL1xuICB1c2VySWQ6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBFbWFpbCBkZWwgdXN1YXJpbyAqL1xuICBlbWFpbDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFJvbGVzIGRlbCB1c3VhcmlvICovXG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgLyoqIFBlcm1pc29zIGRlbCB1c3VhcmlvIChmb3JtYXRvICdyZXNvdXJjZTphY3Rpb24nKSAqL1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gIC8qKiBVc3VhcmlvIGVzIHN1cGVyIGFkbWluICovXG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgLyoqIFRpbWVzdGFtcCBkZSBleHBpcmFjacOzbiBkZWwgYWNjZXNzVG9rZW4gKG1zKSAqL1xuICBleHBpcmVzQXQ6IG51bWJlciB8IG51bGw7XG4gIC8qKiBFcnJvciBkZSBhdXRlbnRpY2FjacOzbiAoc2kgZXhpc3RlKSAqL1xuICBlcnJvcjogQXV0aEVycm9yIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBJbmZvcm1hY2nDs24gZGVsIHVzdWFyaW8gYXV0ZW50aWNhZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFVzZXIge1xuICB1c2VySWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBpc1N1cGVyQWRtaW46IGJvb2xlYW47XG4gIG1mYUVuYWJsZWQ/OiBib29sZWFuO1xuICBtZmFNZXRob2Q/OiBNRkFNZXRob2Q7XG59XG5cbi8qKlxuICogRXJyb3IgZGUgYXV0ZW50aWNhY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEVycm9yIHtcbiAgY29kZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXN0YWRvIGluaWNpYWwgZGUgYXV0ZW50aWNhY2nDs24uXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX0FVVEhfU1RBVEU6IEF1dGhTdGF0ZSA9IHtcbiAgaXNBdXRoZW50aWNhdGVkOiBmYWxzZSxcbiAgaXNMb2FkaW5nOiB0cnVlLFxuICBhY2Nlc3NUb2tlbjogbnVsbCxcbiAgcmVmcmVzaFRva2VuOiBudWxsLFxuICB1c2VySWQ6IG51bGwsXG4gIGVtYWlsOiBudWxsLFxuICByb2xlczogW10sXG4gIHBlcm1pc3Npb25zOiBbXSxcbiAgaXNTdXBlckFkbWluOiBmYWxzZSxcbiAgZXhwaXJlc0F0OiBudWxsLFxuICBlcnJvcjogbnVsbCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRkFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBNw6l0b2RvcyBkZSBNRkEgc29wb3J0YWRvcyAqL1xuZXhwb3J0IHR5cGUgTUZBTWV0aG9kID0gJ0VNQUlMJyB8ICdTTVMnO1xuXG4vKipcbiAqIEVzdGFkbyBkZSBNRkEgcGVuZGllbnRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVBlbmRpbmdTdGF0ZSB7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBtZmFUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgbWV0aG9kOiBNRkFNZXRob2QgfCBudWxsO1xufVxuXG4vKipcbiAqIEVzdGFkbyBpbmljaWFsIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUZBX1NUQVRFOiBNRkFQZW5kaW5nU3RhdGUgPSB7XG4gIHJlcXVpcmVkOiBmYWxzZSxcbiAgbWZhVG9rZW46IG51bGwsXG4gIG1ldGhvZDogbnVsbCxcbn07XG5cbi8qKlxuICogUmVzdWx0YWRvIGRlIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlc3VsdCB7XG4gIGNvZGVTZW50OiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXN0YWRvIGRlIE1GQSBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTdGF0dXMge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBtZXRob2Q6IE1GQU1ldGhvZCB8IG51bGw7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVFVRVNUUy9SRVNQT05TRVMgKGFsaW5lYWRvcyBjb24gYmFja2VuZCBBdXRoVjIpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBzaWdudXAgKHJlZ2lzdHJvKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWdudXBSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBwaG9uZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBzaWdudXAgKHJlZ2lzdHJvKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWdudXBSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHZlcmlmaWNhciBlbWFpbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJpZnlFbWFpbFJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgdmVyaWZpY2FjacOzbiBkZSBlbWFpbC5cbiAqIFNpIGVzIGV4aXRvc28sIGluY2x1eWUgdG9rZW5zIHBhcmEgYXV0by1sb2dpbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJpZnlFbWFpbFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdmVyaWZpZWQ6IGJvb2xlYW47XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbj86IG51bWJlcjtcbiAgdG9rZW5UeXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZWVudmlhciBjw7NkaWdvIGRlIHZlcmlmaWNhY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZW5kQ29kZVJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICB0eXBlOiAnRU1BSUxfVkVSSUZZJyB8ICdQQVNTV09SRF9SRVNFVCc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgcmVlbnbDrW8gZGUgY8OzZGlnby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNlbmRDb2RlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzZW50OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBzaWduaW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmluUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgc2lnbmluLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25pblJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbj86IHN0cmluZztcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgZXhwaXJlc0luPzogbnVtYmVyO1xuICB0b2tlblR5cGU/OiBzdHJpbmc7XG4gIG1mYVJlcXVpcmVkPzogYm9vbGVhbjtcbiAgbWZhVG9rZW4/OiBzdHJpbmc7XG4gIG1mYU1ldGhvZD86IE1GQU1ldGhvZDtcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgdmVyaWZpY2FyIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFWZXJpZnlSZXF1ZXN0IHtcbiAgbWZhVG9rZW46IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhciBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBVmVyaWZ5UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgZXhwaXJlc0luOiBudW1iZXI7XG4gIHRva2VuVHlwZTogc3RyaW5nO1xuICByb2xlcz86IHN0cmluZ1tdO1xuICBwZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZWZyZXNjYXIgdG9rZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFJlcXVlc3Qge1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWZyZXNjYXIgdG9rZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgZXhwaXJlc0luOiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGxvZ291dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dvdXRSZXF1ZXN0IHtcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgbG9nb3V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ291dFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBvYnRlbmVyIHBlcm1pc29zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldFBlcm1pc3Npb25zUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICByb2xlczogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgaXNTdXBlckFkbWluOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBzZXR1cCBkZSBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBU2V0dXBSZXF1ZXN0IHtcbiAgbWV0aG9kOiBNRkFNZXRob2Q7XG4gIHBob25lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgY29kZVNlbnQ6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgY29uZmlybWFyIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFDb25maXJtUmVxdWVzdCB7XG4gIGNvZGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBjb25maXJtYXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQUNvbmZpcm1SZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIG1mYUVuYWJsZWQ6IGJvb2xlYW47XG4gIG1ldGhvZDogTUZBTWV0aG9kO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBkZXNoYWJpbGl0YXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQURpc2FibGVSZXF1ZXN0IHtcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBkZXNoYWJpbGl0YXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQURpc2FibGVSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIG1mYURpc2FibGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBpbmljaWFyIHJlY3VwZXJhY2nDs24gZGUgY29udHJhc2XDsWEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9yZ290UGFzc3dvcmRSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBmb3Jnb3QgcGFzc3dvcmQgKHNpZW1wcmUgaWd1YWwgcG9yIHNlZ3VyaWRhZCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9yZ290UGFzc3dvcmRSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgcmVzZXRlYXIgY29udHJhc2XDsWEgY29uIGPDs2RpZ28uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRQYXNzd29yZFJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG4gIG5ld1Bhc3N3b3JkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgcmVzZXQgcGFzc3dvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBvYnRlbmVyIHBlcmZpbCBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRQcm9maWxlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBwaG9uZT86IHN0cmluZztcbiAgZW1haWxWZXJpZmllZDogYm9vbGVhbjtcbiAgcGhvbmVWZXJpZmllZDogYm9vbGVhbjtcbiAgbWZhRW5hYmxlZDogYm9vbGVhbjtcbiAgbWZhTWV0aG9kPzogTUZBTWV0aG9kO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGFjdHVhbGl6YXIgcGVyZmlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVByb2ZpbGVSZXF1ZXN0IHtcbiAgbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgYWN0dWFsaXphciBwZXJmaWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUHJvZmlsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdXBkYXRlZDogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVWRU5UT1MgREUgU0lOQ1JPTklaQUNJw5NOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1dJVENIIE9SR0FOSVpBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgY2FtYmlhciBkZSBvcmdhbml6YWNpw7NuIGFjdGl2YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hPcmdSZXF1ZXN0IHtcbiAgb3JnYW5pemF0aW9uSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBjYW1iaW8gZGUgb3JnYW5pemFjacOzbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hPcmdSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW46IHN0cmluZztcbiAgYWN0aXZlT3JnOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFVkVOVE9TIERFIFNJTkNST05JWkFDScOTTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIFRpcG9zIGRlIGV2ZW50b3MgZGUgc2luY3Jvbml6YWNpw7NuIGVudHJlIHBlc3Rhw7FhcyAqL1xuZXhwb3J0IHR5cGUgQXV0aFN5bmNFdmVudFR5cGUgPVxuICB8ICdMT0dJTidcbiAgfCAnTE9HT1VUJ1xuICB8ICdUT0tFTl9SRUZSRVNIJ1xuICB8ICdQRVJNSVNTSU9OU19VUERBVEUnXG4gIHwgJ09SR19TV0lUQ0gnO1xuXG4vKipcbiAqIEV2ZW50byBkZSBzaW5jcm9uaXphY2nDs24gZW50cmUgcGVzdGHDsWFzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhTeW5jRXZlbnQge1xuICB0eXBlOiBBdXRoU3luY0V2ZW50VHlwZTtcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIHBheWxvYWQ/OiB7XG4gICAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gICAgZXhwaXJlc0F0PzogbnVtYmVyO1xuICAgIGFjdGl2ZU9yZz86IHN0cmluZztcbiAgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEpXVCBDTEFJTVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ2xhaW1zIGRlbCBKV1QgZGUgYWNjZXNvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpXVENsYWltcyB7XG4gIC8qKiBVc2VyIElEICovXG4gIHVpZDogc3RyaW5nO1xuICAvKiogRW1haWwgKi9cbiAgZW1haWw6IHN0cmluZztcbiAgLyoqIFNlc3Npb24gSUQgKi9cbiAgc2lkPzogc3RyaW5nO1xuICAvKiogSXNzdWVkIGF0ICovXG4gIGlhdDogbnVtYmVyO1xuICAvKiogRXhwaXJhdGlvbiAqL1xuICBleHA6IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUT1JBR0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRGF0b3MgcGVyc2lzdGlkb3MgZW4gc3RvcmFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yZWRBdXRoU3RhdGUge1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgcm9sZXM6IHN0cmluZ1tdO1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgZXhwaXJlc0F0PzogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gREVWSUNFIFJFR0lTVFJBVElPTiAoUHVzaCBOb3RpZmljYXRpb25zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBQbGF0YWZvcm1hcyBzb3BvcnRhZGFzIHBhcmEgcHVzaCBub3RpZmljYXRpb25zLlxuICovXG5leHBvcnQgdHlwZSBEZXZpY2VQbGF0Zm9ybSA9ICd3ZWInIHwgJ2lvcycgfCAnYW5kcm9pZCc7XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHJlZ2lzdHJhciB1biBkaXNwb3NpdGl2by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckRldmljZVJlcXVlc3Qge1xuICAvKiogRkNNIHRva2VuIGRlbCBkaXNwb3NpdGl2byAqL1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogUGxhdGFmb3JtYSBkZWwgZGlzcG9zaXRpdm8gKi9cbiAgcGxhdGZvcm06IERldmljZVBsYXRmb3JtO1xuICAvKiogTmF2ZWdhZG9yIChzb2xvIHdlYikgKi9cbiAgYnJvd3Nlcj86IHN0cmluZztcbiAgLyoqIFNpc3RlbWEgb3BlcmF0aXZvICovXG4gIG9zPzogc3RyaW5nO1xuICAvKiogVmVyc2nDs24gZGUgbGEgYXBsaWNhY2nDs24gKi9cbiAgYXBwVmVyc2lvbj86IHN0cmluZztcbiAgLyoqIE5vbWJyZSBhbWlnYWJsZSBkZWwgZGlzcG9zaXRpdm8gKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIE1ldGFkYXRhIGFkaWNpb25hbCAqL1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgcmVnaXN0cm8gZGUgZGlzcG9zaXRpdm8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJEZXZpY2VSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGRldmljZToge1xuICAgIGRldmljZUlkOiBzdHJpbmc7XG4gICAgdG9rZW46IHN0cmluZztcbiAgICBwbGF0Zm9ybTogRGV2aWNlUGxhdGZvcm07XG4gICAgYnJvd3Nlcj86IHN0cmluZztcbiAgICBvcz86IHN0cmluZztcbiAgICBsYXN0QWN0aXZlOiBzdHJpbmc7XG4gICAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIH07XG4gIC8qKiB0cnVlIHNpIGVzIHVuIG51ZXZvIGRpc3Bvc2l0aXZvLCBmYWxzZSBzaSBzZSBhY3R1YWxpesOzIHVubyBleGlzdGVudGUgKi9cbiAgaXNOZXc6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVzdWx0YWRvIGRlIGhhYmlsaXRhciBub3RpZmljYWNpb25lcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmFibGVOb3RpZmljYXRpb25zUmVzdWx0IHtcbiAgLyoqIFNpIHNlIG90b3JnYXJvbiBsb3MgcGVybWlzb3MgKi9cbiAgZ3JhbnRlZDogYm9vbGVhbjtcbiAgLyoqIEZDTSB0b2tlbiAoc29sbyBzaSBncmFudGVkPXRydWUpICovXG4gIHRva2VuPzogc3RyaW5nO1xuICAvKiogU2kgZWwgZGlzcG9zaXRpdm8gZnVlIHJlZ2lzdHJhZG8gZW4gZWwgYmFja2VuZCAqL1xuICByZWdpc3RlcmVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFc3RhZG8gZGUgcGVybWlzb3MgZGUgbm90aWZpY2FjacOzbi5cbiAqL1xuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uUGVybWlzc2lvblN0YXRlID0gJ2dyYW50ZWQnIHwgJ2RlbmllZCcgfCAnZGVmYXVsdCcgfCAndW5zdXBwb3J0ZWQnO1xuIl19
|
|
@@ -5,13 +5,12 @@
|
|
|
5
5
|
* Permite solicitar permisos, obtener tokens, escuchar mensajes y manejar
|
|
6
6
|
* navegación (deep linking) cuando el usuario toca una notificación.
|
|
7
7
|
*/
|
|
8
|
-
import { Inject, Injectable,
|
|
8
|
+
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
9
9
|
import { isPlatformBrowser } from '@angular/common';
|
|
10
|
-
import { getToken, deleteToken, onMessage } from '@angular/fire/messaging';
|
|
10
|
+
import { Messaging, getToken, deleteToken, onMessage } from '@angular/fire/messaging';
|
|
11
11
|
import { Subject, BehaviorSubject } from 'rxjs';
|
|
12
12
|
import { VALTECH_FIREBASE_CONFIG } from './config';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@angular/fire/messaging";
|
|
15
14
|
/**
|
|
16
15
|
* Servicio para Firebase Cloud Messaging (FCM).
|
|
17
16
|
*
|
|
@@ -43,8 +42,8 @@ import * as i1 from "@angular/fire/messaging";
|
|
|
43
42
|
* ```
|
|
44
43
|
*/
|
|
45
44
|
export class MessagingService {
|
|
46
|
-
constructor(
|
|
47
|
-
this.
|
|
45
|
+
constructor(injector, config, platformId, ngZone) {
|
|
46
|
+
this.injector = injector;
|
|
48
47
|
this.config = config;
|
|
49
48
|
this.platformId = platformId;
|
|
50
49
|
this.ngZone = ngZone;
|
|
@@ -57,6 +56,18 @@ export class MessagingService {
|
|
|
57
56
|
});
|
|
58
57
|
this.initializeMessaging();
|
|
59
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Obtiene la instancia de Messaging de forma perezosa.
|
|
61
|
+
* Esto evita el error de APP_INITIALIZER de AngularFire.
|
|
62
|
+
*/
|
|
63
|
+
getMessagingInstance() {
|
|
64
|
+
try {
|
|
65
|
+
return this.injector.get(Messaging, null);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
60
71
|
// ===========================================================================
|
|
61
72
|
// INICIALIZACIÓN
|
|
62
73
|
// ===========================================================================
|
|
@@ -119,7 +130,7 @@ export class MessagingService {
|
|
|
119
130
|
return false;
|
|
120
131
|
}
|
|
121
132
|
// Verificar que messaging esté disponible
|
|
122
|
-
if (!this.
|
|
133
|
+
if (!this.getMessagingInstance()) {
|
|
123
134
|
return false;
|
|
124
135
|
}
|
|
125
136
|
return true;
|
|
@@ -183,7 +194,8 @@ export class MessagingService {
|
|
|
183
194
|
* ```
|
|
184
195
|
*/
|
|
185
196
|
async getToken() {
|
|
186
|
-
|
|
197
|
+
const messaging = this.getMessagingInstance();
|
|
198
|
+
if (!messaging) {
|
|
187
199
|
return null;
|
|
188
200
|
}
|
|
189
201
|
const vapidKey = this.config.messagingVapidKey;
|
|
@@ -197,7 +209,7 @@ export class MessagingService {
|
|
|
197
209
|
const registration = await navigator.serviceWorker.register('/firebase-messaging-sw.js');
|
|
198
210
|
// Esperar a que el SW esté activo
|
|
199
211
|
await navigator.serviceWorker.ready;
|
|
200
|
-
const token = await getToken(
|
|
212
|
+
const token = await getToken(messaging, {
|
|
201
213
|
vapidKey,
|
|
202
214
|
serviceWorkerRegistration: registration,
|
|
203
215
|
});
|
|
@@ -222,11 +234,12 @@ export class MessagingService {
|
|
|
222
234
|
* ```
|
|
223
235
|
*/
|
|
224
236
|
async deleteToken() {
|
|
225
|
-
|
|
237
|
+
const messaging = this.getMessagingInstance();
|
|
238
|
+
if (!messaging) {
|
|
226
239
|
return;
|
|
227
240
|
}
|
|
228
241
|
try {
|
|
229
|
-
await deleteToken(
|
|
242
|
+
await deleteToken(messaging);
|
|
230
243
|
this.stateSubject.next({
|
|
231
244
|
...this.stateSubject.value,
|
|
232
245
|
token: null,
|
|
@@ -267,10 +280,11 @@ export class MessagingService {
|
|
|
267
280
|
* Configura el listener de mensajes en foreground
|
|
268
281
|
*/
|
|
269
282
|
setupMessageListener() {
|
|
270
|
-
|
|
283
|
+
const messaging = this.getMessagingInstance();
|
|
284
|
+
if (!messaging || this.unsubscribeOnMessage) {
|
|
271
285
|
return;
|
|
272
286
|
}
|
|
273
|
-
this.unsubscribeOnMessage = onMessage(
|
|
287
|
+
this.unsubscribeOnMessage = onMessage(messaging, (payload) => {
|
|
274
288
|
const notification = {
|
|
275
289
|
title: payload.notification?.title,
|
|
276
290
|
body: payload.notification?.body,
|
|
@@ -502,19 +516,17 @@ export class MessagingService {
|
|
|
502
516
|
}
|
|
503
517
|
return params;
|
|
504
518
|
}
|
|
505
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagingService, deps: [{ token:
|
|
519
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagingService, deps: [{ token: i0.Injector }, { token: VALTECH_FIREBASE_CONFIG }, { token: PLATFORM_ID }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
506
520
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagingService, providedIn: 'root' }); }
|
|
507
521
|
}
|
|
508
522
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagingService, decorators: [{
|
|
509
523
|
type: Injectable,
|
|
510
524
|
args: [{ providedIn: 'root' }]
|
|
511
|
-
}], ctorParameters: () => [{ type:
|
|
512
|
-
type: Optional
|
|
513
|
-
}] }, { type: undefined, decorators: [{
|
|
525
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
514
526
|
type: Inject,
|
|
515
527
|
args: [VALTECH_FIREBASE_CONFIG]
|
|
516
528
|
}] }, { type: Object, decorators: [{
|
|
517
529
|
type: Inject,
|
|
518
530
|
args: [PLATFORM_ID]
|
|
519
531
|
}] }, { type: i0.NgZone }] });
|
|
520
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL21lc3NhZ2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFVLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFhLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEYsT0FBTyxFQUFjLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFrQm5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFDc0IsU0FBMkIsRUFDTixNQUE2QixFQUN6QyxVQUFrQixFQUN2QyxNQUFjO1FBSEYsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDTixXQUFNLEdBQU4sTUFBTSxDQUF1QjtRQUN6QyxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFkaEIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUNwRCw2QkFBd0IsR0FBRyxJQUFJLE9BQU8sRUFBMEIsQ0FBQztRQUNqRSxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFpQjtZQUN6RCxLQUFLLEVBQUUsSUFBSTtZQUNYLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUMsQ0FBQztRQVVELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7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QUN6QyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEUsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOytHQXhnQlUsZ0JBQWdCLDJEQWFqQix1QkFBdUIsYUFDdkIsV0FBVzttSEFkVixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBYTdCLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsdUJBQXVCOzswQkFDOUIsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZXNzYWdpbmcgU2VydmljZSAoRkNNKVxuICpcbiAqIFNlcnZpY2lvIHBhcmEgRmlyZWJhc2UgQ2xvdWQgTWVzc2FnaW5nIChQdXNoIE5vdGlmaWNhdGlvbnMpLlxuICogUGVybWl0ZSBzb2xpY2l0YXIgcGVybWlzb3MsIG9idGVuZXIgdG9rZW5zLCBlc2N1Y2hhciBtZW5zYWplcyB5IG1hbmVqYXJcbiAqIG5hdmVnYWNpw7NuIChkZWVwIGxpbmtpbmcpIGN1YW5kbyBlbCB1c3VhcmlvIHRvY2EgdW5hIG5vdGlmaWNhY2nDs24uXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUsIE9wdGlvbmFsLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWVzc2FnaW5nLCBnZXRUb2tlbiwgZGVsZXRlVG9rZW4sIG9uTWVzc2FnZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvbWVzc2FnaW5nJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBWQUxURUNIX0ZJUkVCQVNFX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7XG4gIE5vdGlmaWNhdGlvbkFjdGlvbixcbiAgTm90aWZpY2F0aW9uQ2xpY2tFdmVudCxcbiAgTm90aWZpY2F0aW9uUGF5bG9hZCxcbiAgTm90aWZpY2F0aW9uUGVybWlzc2lvbixcbiAgVmFsdGVjaEZpcmViYXNlQ29uZmlnLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBFc3RhZG8gaW50ZXJubyBkZWwgc2VydmljaW8gZGUgbWVzc2FnaW5nXG4gKi9cbmludGVyZmFjZSBNZXNzYWdpbmdTdGF0ZSB7XG4gIHRva2VuOiBzdHJpbmcgfCBudWxsO1xuICBwZXJtaXNzaW9uOiBOb3RpZmljYXRpb25QZXJtaXNzaW9uO1xuICBpc1N1cHBvcnRlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIEZpcmViYXNlIENsb3VkIE1lc3NhZ2luZyAoRkNNKS5cbiAqXG4gKiBQZXJtaXRlIHJlY2liaXIgbm90aWZpY2FjaW9uZXMgcHVzaCBlbiBsYSBhcGxpY2FjacOzbiB3ZWIuXG4gKiBSZXF1aWVyZSBWQVBJRCBrZXkgY29uZmlndXJhZGEgZW4gVmFsdGVjaEZpcmViYXNlQ29uZmlnLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkNvbXBvbmVudCB7XG4gKiAgIHByaXZhdGUgbWVzc2FnaW5nID0gaW5qZWN0KE1lc3NhZ2luZ1NlcnZpY2UpO1xuICpcbiAqICAgdG9rZW4gPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gKlxuICogICBhc3luYyBlbmFibGVOb3RpZmljYXRpb25zKCkge1xuICogICAgIC8vIFNvbGljaXRhciBwZXJtaXNvIHkgb2J0ZW5lciB0b2tlblxuICogICAgIGNvbnN0IHRva2VuID0gYXdhaXQgdGhpcy5tZXNzYWdpbmcucmVxdWVzdFBlcm1pc3Npb24oKTtcbiAqXG4gKiAgICAgaWYgKHRva2VuKSB7XG4gKiAgICAgICB0aGlzLnRva2VuLnNldCh0b2tlbik7XG4gKiAgICAgICAvLyBFbnZpYXIgdG9rZW4gYSB0dSBiYWNrZW5kIHBhcmEgYWxtYWNlbmFybG9cbiAqICAgICAgIGF3YWl0IHRoaXMuYmFja2VuZC5yZWdpc3RlckRldmljZVRva2VuKHRva2VuKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqXG4gKiAgIC8vIEVzY3VjaGFyIG1lbnNhamVzIGVuIGZvcmVncm91bmRcbiAqICAgbWVzc2FnZXMkID0gdGhpcy5tZXNzYWdpbmcub25NZXNzYWdlKCk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdpbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtZXNzYWdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PE5vdGlmaWNhdGlvblBheWxvYWQ+KCk7XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uQ2xpY2tTdWJqZWN0ID0gbmV3IFN1YmplY3Q8Tm90aWZpY2F0aW9uQ2xpY2tFdmVudD4oKTtcbiAgcHJpdmF0ZSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lc3NhZ2luZ1N0YXRlPih7XG4gICAgdG9rZW46IG51bGwsXG4gICAgcGVybWlzc2lvbjogJ2RlZmF1bHQnLFxuICAgIGlzU3VwcG9ydGVkOiBmYWxzZSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZU9uTWVzc2FnZT86ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBtZXNzYWdpbmc6IE1lc3NhZ2luZyB8IG51bGwsXG4gICAgQEluamVjdChWQUxURUNIX0ZJUkVCQVNFX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFZhbHRlY2hGaXJlYmFzZUNvbmZpZyxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZU1lc3NhZ2luZygpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIElOSUNJQUxJWkFDScOTTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogSW5pY2lhbGl6YSBlbCBzZXJ2aWNpbyBkZSBtZXNzYWdpbmdcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaW5pdGlhbGl6ZU1lc3NhZ2luZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdXBwb3J0ZWQgPSBhd2FpdCB0aGlzLmNoZWNrU3VwcG9ydCgpO1xuICAgIGNvbnN0IHBlcm1pc3Npb24gPSB0aGlzLmdldFBlcm1pc3Npb25TdGF0ZSgpO1xuXG4gICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7XG4gICAgICAuLi50aGlzLnN0YXRlU3ViamVjdC52YWx1ZSxcbiAgICAgIGlzU3VwcG9ydGVkOiBzdXBwb3J0ZWQsXG4gICAgICBwZXJtaXNzaW9uLFxuICAgIH0pO1xuXG4gICAgLy8gU2kgeWEgdGllbmUgcGVybWlzbywgY29uZmlndXJhciBsaXN0ZW5lcnNcbiAgICBpZiAoc3VwcG9ydGVkICYmIHBlcm1pc3Npb24gPT09ICdncmFudGVkJykge1xuICAgICAgdGhpcy5zZXR1cE1lc3NhZ2VMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIC8vIEVzY3VjaGFyIG1lbnNhamVzIGRlbCBTZXJ2aWNlIFdvcmtlciAoY2xpY2tzIGVuIG5vdGlmaWNhY2lvbmVzIGJhY2tncm91bmQpXG4gICAgdGhpcy5zZXR1cFNlcnZpY2VXb3JrZXJMaXN0ZW5lcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYSBsaXN0ZW5lciBwYXJhIG1lbnNhamVzIGRlbCBTZXJ2aWNlIFdvcmtlci5cbiAgICogUmVjaWJlIGV2ZW50b3MgY3VhbmRvIGVsIHVzdWFyaW8gaGFjZSBjbGljayBlbiB1bmEgbm90aWZpY2FjacOzbiBiYWNrZ3JvdW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cFNlcnZpY2VXb3JrZXJMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgISgnc2VydmljZVdvcmtlcicgaW4gbmF2aWdhdG9yKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFZlcmlmaWNhciBxdWUgZXMgdW4gbWVuc2FqZSBkZSBub3RpZmljYWNpw7NuIGNsaWNrXG4gICAgICBpZiAoZXZlbnQuZGF0YT8udHlwZSA9PT0gJ05PVElGSUNBVElPTl9DTElDSycpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBub3RpZmljYXRpb24gPSBldmVudC5kYXRhLm5vdGlmaWNhdGlvbiBhcyBOb3RpZmljYXRpb25QYXlsb2FkO1xuICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZXh0cmFjdEFjdGlvbkZyb21EYXRhKG5vdGlmaWNhdGlvbi5kYXRhKTtcblxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ2xpY2tTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBGQ00gZXN0w6Egc29wb3J0YWRvIGVuIGVsIG5hdmVnYWRvciBhY3R1YWxcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tTdXBwb3J0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFZlcmlmaWNhciBBUElzIG5lY2VzYXJpYXNcbiAgICBpZiAoISgnTm90aWZpY2F0aW9uJyBpbiB3aW5kb3cpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCEoJ3NlcnZpY2VXb3JrZXInIGluIG5hdmlnYXRvcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZmljYXIgcXVlIG1lc3NhZ2luZyBlc3TDqSBkaXNwb25pYmxlXG4gICAgaWYgKCF0aGlzLm1lc3NhZ2luZykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBFUk1JU09TIFkgVE9LRU5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFNvbGljaXRhIHBlcm1pc28gZGUgbm90aWZpY2FjaW9uZXMgeSBvYnRpZW5lIGVsIHRva2VuIEZDTS5cbiAgICpcbiAgICogQHJldHVybnMgVG9rZW4gRkNNIHNpIHNlIG90b3Jnw7MgcGVybWlzbywgbnVsbCBzaSBzZSBkZW5lZ8OzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgdG9rZW4gPSBhd2FpdCBtZXNzYWdpbmcucmVxdWVzdFBlcm1pc3Npb24oKTtcbiAgICogaWYgKHRva2VuKSB7XG4gICAqICAgY29uc29sZS5sb2coJ1Rva2VuIEZDTTonLCB0b2tlbik7XG4gICAqICAgLy8gRW52aWFyIGEgYmFja2VuZFxuICAgKiB9IGVsc2Uge1xuICAgKiAgIGNvbnNvbGUubG9nKCdQZXJtaXNvIGRlbmVnYWRvIG8gbm8gc29wb3J0YWRvJyk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyByZXF1ZXN0UGVybWlzc2lvbigpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBpZiAoIWF3YWl0IHRoaXMuaXNTdXBwb3J0ZWQoKSkge1xuICAgICAgY29uc29sZS53YXJuKCdGQ00gbm8gZXN0w6Egc29wb3J0YWRvIGVuIGVzdGUgbmF2ZWdhZG9yJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gU29saWNpdGFyIHBlcm1pc28gZGUgbm90aWZpY2FjaW9uZXNcbiAgICAgIGNvbnN0IHBlcm1pc3Npb24gPSBhd2FpdCBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKTtcblxuICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7XG4gICAgICAgIC4uLnRoaXMuc3RhdGVTdWJqZWN0LnZhbHVlLFxuICAgICAgICBwZXJtaXNzaW9uOiBwZXJtaXNzaW9uIGFzIE5vdGlmaWNhdGlvblBlcm1pc3Npb24sXG4gICAgICB9KTtcblxuICAgICAgaWYgKHBlcm1pc3Npb24gIT09ICdncmFudGVkJykge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1Blcm1pc28gZGUgbm90aWZpY2FjaW9uZXMgZGVuZWdhZG8nKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIE9idGVuZXIgdG9rZW4gRkNNXG4gICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHRoaXMuZ2V0VG9rZW4oKTtcblxuICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgIC8vIENvbmZpZ3VyYXIgbGlzdGVuZXIgZGUgbWVuc2FqZXNcbiAgICAgICAgdGhpcy5zZXR1cE1lc3NhZ2VMaXN0ZW5lcigpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdG9rZW47XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNvbGljaXRhbmRvIHBlcm1pc28gZGUgbm90aWZpY2FjaW9uZXM6JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgdG9rZW4gRkNNIGFjdHVhbCAoc2luIHNvbGljaXRhciBwZXJtaXNvKS5cbiAgICpcbiAgICogQHJldHVybnMgVG9rZW4gRkNNIHNpIGVzdMOhIGRpc3BvbmlibGUsIG51bGwgc2kgbm9cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB0b2tlbiA9IGF3YWl0IG1lc3NhZ2luZy5nZXRUb2tlbigpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldFRva2VuKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGlmICghdGhpcy5tZXNzYWdpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHZhcGlkS2V5ID0gdGhpcy5jb25maWcubWVzc2FnaW5nVmFwaWRLZXk7XG4gICAgaWYgKCF2YXBpZEtleSkge1xuICAgICAgY29uc29sZS53YXJuKCdWQVBJRCBrZXkgbm8gY29uZmlndXJhZGEuIEZDTSBubyBmdW5jaW9uYXLDoS4nKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBSZWdpc3RyYXIgU1cgcGVyc29uYWxpemFkbyBhbnRlcyBkZSBvYnRlbmVyIHRva2VuXG4gICAgICAvLyBFc3RvIGVzIG5lY2VzYXJpbyBjdWFuZG8gdXNhbW9zIHVuIFNXIGN1c3RvbSAoZmlyZWJhc2UtbWVzc2FnaW5nLXN3LmpzKVxuICAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9maXJlYmFzZS1tZXNzYWdpbmctc3cuanMnKTtcbiAgICAgIC8vIEVzcGVyYXIgYSBxdWUgZWwgU1cgZXN0w6kgYWN0aXZvXG4gICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeTtcblxuICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRUb2tlbih0aGlzLm1lc3NhZ2luZywge1xuICAgICAgICB2YXBpZEtleSxcbiAgICAgICAgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjogcmVnaXN0cmF0aW9uLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoe1xuICAgICAgICAuLi50aGlzLnN0YXRlU3ViamVjdC52YWx1ZSxcbiAgICAgICAgdG9rZW4sXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvYnRlbmllbmRvIHRva2VuIEZDTTonLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRWxpbWluYSBlbCB0b2tlbiBGQ00gYWN0dWFsICh1bnN1YnNjcmliZSBkZSBub3RpZmljYWNpb25lcykuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXdhaXQgbWVzc2FnaW5nLmRlbGV0ZVRva2VuKCk7XG4gICAqIGNvbnNvbGUubG9nKCdUb2tlbiBlbGltaW5hZG8sIG5vIHJlY2liaXLDoSBtw6FzIG5vdGlmaWNhY2lvbmVzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlVG9rZW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLm1lc3NhZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkZWxldGVUb2tlbih0aGlzLm1lc3NhZ2luZyk7XG5cbiAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoe1xuICAgICAgICAuLi50aGlzLnN0YXRlU3ViamVjdC52YWx1ZSxcbiAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICB9KTtcblxuICAgICAgLy8gTGltcGlhciBsaXN0ZW5lciBkZSBtZW5zYWplc1xuICAgICAgaWYgKHRoaXMudW5zdWJzY3JpYmVPbk1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZU9uTWVzc2FnZSgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlT25NZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlbGltaW5hbmRvIHRva2VuIEZDTTonLCBlcnJvcik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHNlIHB1ZG8gZWxpbWluYXIgZWwgdG9rZW4gZGUgbm90aWZpY2FjaW9uZXMnKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTUVOU0FKRVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgZGUgbWVuc2FqZXMgcmVjaWJpZG9zIGVuIGZvcmVncm91bmQuXG4gICAqXG4gICAqIElNUE9SVEFOVEU6IExvcyBtZW5zYWplcyBlbiBiYWNrZ3JvdW5kIHNvbiBtYW5lamFkb3MgcG9yIGVsIFNlcnZpY2UgV29ya2VyLlxuICAgKlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHF1ZSBlbWl0ZSBjdWFuZG8gbGxlZ2EgdW4gbWVuc2FqZSBlbiBmb3JlZ3JvdW5kXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogbWVzc2FnaW5nLm9uTWVzc2FnZSgpLnN1YnNjcmliZShwYXlsb2FkID0+IHtcbiAgICogICBjb25zb2xlLmxvZygnTWVuc2FqZSByZWNpYmlkbzonLCBwYXlsb2FkKTtcbiAgICogICAvLyBNb3N0cmFyIG5vdGlmaWNhY2nDs24gY3VzdG9tIG8gYWN0dWFsaXphciBVSVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBvbk1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25QYXlsb2FkPiB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJhIGVsIGxpc3RlbmVyIGRlIG1lbnNhamVzIGVuIGZvcmVncm91bmRcbiAgICovXG4gIHByaXZhdGUgc2V0dXBNZXNzYWdlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1lc3NhZ2luZyB8fCB0aGlzLnVuc3Vic2NyaWJlT25NZXNzYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51bnN1YnNjcmliZU9uTWVzc2FnZSA9IG9uTWVzc2FnZSh0aGlzLm1lc3NhZ2luZywgKHBheWxvYWQpID0+IHtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uUGF5bG9hZCA9IHtcbiAgICAgICAgdGl0bGU6IHBheWxvYWQubm90aWZpY2F0aW9uPy50aXRsZSxcbiAgICAgICAgYm9keTogcGF5bG9hZC5ub3RpZmljYXRpb24/LmJvZHksXG4gICAgICAgIGltYWdlOiBwYXlsb2FkLm5vdGlmaWNhdGlvbj8uaW1hZ2UsXG4gICAgICAgIGRhdGE6IHBheWxvYWQuZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgICAgICBtZXNzYWdlSWQ6IHBheWxvYWQubWVzc2FnZUlkLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5tZXNzYWdlU3ViamVjdC5uZXh0KG5vdGlmaWNhdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRVNUQURPIFkgVVRJTElEQURFU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogT2J0aWVuZSBlbCBlc3RhZG8gYWN0dWFsIGRlbCBwZXJtaXNvIGRlIG5vdGlmaWNhY2lvbmVzLlxuICAgKlxuICAgKiBAcmV0dXJucyAnZ3JhbnRlZCcgfCAnZGVuaWVkJyB8ICdkZWZhdWx0J1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHBlcm1pc3Npb24gPSBtZXNzYWdpbmcuZ2V0UGVybWlzc2lvblN0YXRlKCk7XG4gICAqIGlmIChwZXJtaXNzaW9uID09PSAnZ3JhbnRlZCcpIHtcbiAgICogICAvLyBZYSB0aWVuZSBwZXJtaXNvXG4gICAqIH0gZWxzZSBpZiAocGVybWlzc2lvbiA9PT0gJ2RlZmF1bHQnKSB7XG4gICAqICAgLy8gUHVlZGUgc29saWNpdGFyIHBlcm1pc29cbiAgICogfSBlbHNlIHtcbiAgICogICAvLyBEZW5lZ2FkbywgZGViZSBoYWJpbGl0YXIgbWFudWFsbWVudGVcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGdldFBlcm1pc3Npb25TdGF0ZSgpOiBOb3RpZmljYXRpb25QZXJtaXNzaW9uIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiAnZGVmYXVsdCc7XG4gICAgfVxuXG4gICAgaWYgKCEoJ05vdGlmaWNhdGlvbicgaW4gd2luZG93KSkge1xuICAgICAgcmV0dXJuICdkZW5pZWQnO1xuICAgIH1cblxuICAgIHJldHVybiBOb3RpZmljYXRpb24ucGVybWlzc2lvbiBhcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIEZDTSBlc3TDoSBzb3BvcnRhZG8gZW4gZWwgbmF2ZWdhZG9yIGFjdHVhbC5cbiAgICpcbiAgICogQHJldHVybnMgdHJ1ZSBzaSBGQ00gZXN0w6Egc29wb3J0YWRvXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaWYgKGF3YWl0IG1lc3NhZ2luZy5pc1N1cHBvcnRlZCgpKSB7XG4gICAqICAgLy8gUHVlZGUgdXNhciBub3RpZmljYWNpb25lcyBwdXNoXG4gICAqIH0gZWxzZSB7XG4gICAqICAgLy8gTmF2ZWdhZG9yIG5vIHNvcG9ydGEgbyBubyB0aWVuZSBTZXJ2aWNlIFdvcmtlclxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgaXNTdXBwb3J0ZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tTdXBwb3J0KCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBlbCB0b2tlbiBhY3R1YWwgc2luIGhhY2VyIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm5zIFRva2VuIGFsbWFjZW5hZG8gbyBudWxsXG4gICAqL1xuICBnZXQgY3VycmVudFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnN0YXRlU3ViamVjdC52YWx1ZS50b2tlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIGRlbCBlc3RhZG8gY29tcGxldG8gZGVsIHNlcnZpY2lvIGRlIG1lc3NhZ2luZy5cbiAgICovXG4gIGdldCBzdGF0ZSQoKTogT2JzZXJ2YWJsZTxNZXNzYWdpbmdTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBlbCB1c3VhcmlvIHlhIG90b3Jnw7MgcGVybWlzbyBkZSBub3RpZmljYWNpb25lcy5cbiAgICovXG4gIGdldCBoYXNQZXJtaXNzaW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlU3ViamVjdC52YWx1ZS5wZXJtaXNzaW9uID09PSAnZ3JhbnRlZCc7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gREVFUCBMSU5LSU5HIC8gTkFWRUdBQ0nDk05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgZGUgY2xpY2tzIGVuIG5vdGlmaWNhY2lvbmVzLlxuICAgKlxuICAgKiBFbWl0ZSBjdWFuZG8gZWwgdXN1YXJpbyBoYWNlIGNsaWNrIGVuIHVuYSBub3RpZmljYWNpw7NuIChmb3JlZ3JvdW5kIG8gYmFja2dyb3VuZCkuXG4gICAqIFVzYSBlc3RlIG9ic2VydmFibGUgcGFyYSBuYXZlZ2FyIGEgbGEgcMOhZ2luYSBjb3JyZXNwb25kaWVudGUuXG4gICAqXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgcXVlIGVtaXRlIE5vdGlmaWNhdGlvbkNsaWNrRXZlbnRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBAQ29tcG9uZW50KHsuLi59KVxuICAgKiBleHBvcnQgY2xhc3MgQXBwQ29tcG9uZW50IHtcbiAgICogICBwcml2YXRlIG1lc3NhZ2luZyA9IGluamVjdChNZXNzYWdpbmdTZXJ2aWNlKTtcbiAgICogICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgKlxuICAgKiAgIGNvbnN0cnVjdG9yKCkge1xuICAgKiAgICAgdGhpcy5tZXNzYWdpbmcub25Ob3RpZmljYXRpb25DbGljaygpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAqICAgICAgIGlmIChldmVudC5hY3Rpb24ucm91dGUpIHtcbiAgICogICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZXZlbnQuYWN0aW9uLnJvdXRlXSwge1xuICAgKiAgICAgICAgICAgcXVlcnlQYXJhbXM6IGV2ZW50LmFjdGlvbi5xdWVyeVBhcmFtc1xuICAgKiAgICAgICAgIH0pO1xuICAgKiAgICAgICB9XG4gICAqICAgICB9KTtcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBvbk5vdGlmaWNhdGlvbkNsaWNrKCk6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uQ2xpY2tFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvbkNsaWNrU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWUgbGEgYWNjacOzbiBkZSBuYXZlZ2FjacOzbiBkZSBsb3MgZGF0b3MgZGUgdW5hIG5vdGlmaWNhY2nDs24uXG4gICAqXG4gICAqIEJ1c2NhIGNhbXBvcyBlc3BlY8OtZmljb3MgZW4gZWwgcGF5bG9hZCBkZSBkYXRvczpcbiAgICogLSBgcm91dGVgOiBSdXRhIGludGVybmEgZGUgbGEgYXBwIChlajogJy9vcmRlcnMvMTIzJylcbiAgICogLSBgdXJsYDogVVJMIGV4dGVybmEgKGVqOiAnaHR0cHM6Ly9leGFtcGxlLmNvbScpXG4gICAqIC0gYGFjdGlvbl90eXBlYDogVGlwbyBkZSBhY2Npw7NuIHBlcnNvbmFsaXphZGFcbiAgICogLSBDYW1wb3MgY29uIHByZWZpam8gYGFjdGlvbl9gOiBEYXRvcyBhZGljaW9uYWxlc1xuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIERhdG9zIGRlbCBwYXlsb2FkIGRlIGxhIG5vdGlmaWNhY2nDs25cbiAgICogQHJldHVybnMgQWNjacOzbiBkZSBuYXZlZ2FjacOzbiBleHRyYcOtZGFcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBQYXlsb2FkIGRlc2RlIGVsIGJhY2tlbmQ6XG4gICAqIC8vIHsgcm91dGU6ICcvb3JkZXJzLzEyMycsIGFjdGlvbl90eXBlOiAndmlld19vcmRlcicsIGFjdGlvbl9vcmRlcklkOiAnMTIzJyB9XG4gICAqXG4gICAqIGNvbnN0IGFjdGlvbiA9IG1lc3NhZ2luZy5leHRyYWN0QWN0aW9uRnJvbURhdGEobm90aWZpY2F0aW9uLmRhdGEpO1xuICAgKiAvLyB7IHJvdXRlOiAnL29yZGVycy8xMjMnLCBhY3Rpb25UeXBlOiAndmlld19vcmRlcicsIGFjdGlvbkRhdGE6IHsgb3JkZXJJZDogJzEyMycgfSB9XG4gICAqIGBgYFxuICAgKi9cbiAgZXh0cmFjdEFjdGlvbkZyb21EYXRhKGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogTm90aWZpY2F0aW9uQWN0aW9uIHtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb246IE5vdGlmaWNhdGlvbkFjdGlvbiA9IHt9O1xuXG4gICAgLy8gUnV0YSBpbnRlcm5hXG4gICAgaWYgKGRhdGFbJ3JvdXRlJ10pIHtcbiAgICAgIGFjdGlvbi5yb3V0ZSA9IGRhdGFbJ3JvdXRlJ107XG4gICAgfVxuXG4gICAgLy8gVVJMIGV4dGVybmFcbiAgICBpZiAoZGF0YVsndXJsJ10pIHtcbiAgICAgIGFjdGlvbi51cmwgPSBkYXRhWyd1cmwnXTtcbiAgICB9XG5cbiAgICAvLyBUaXBvIGRlIGFjY2nDs25cbiAgICBpZiAoZGF0YVsnYWN0aW9uX3R5cGUnXSkge1xuICAgICAgYWN0aW9uLmFjdGlvblR5cGUgPSBkYXRhWydhY3Rpb25fdHlwZSddO1xuICAgIH1cblxuICAgIC8vIFF1ZXJ5IHBhcmFtcyAocHVlZGUgdmVuaXIgY29tbyBKU09OIHN0cmluZylcbiAgICBpZiAoZGF0YVsncXVlcnlfcGFyYW1zJ10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFjdGlvbi5xdWVyeVBhcmFtcyA9IEpTT04ucGFyc2UoZGF0YVsncXVlcnlfcGFyYW1zJ10pO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIFNpIG5vIGVzIEpTT04gdsOhbGlkbywgaW50ZW50YXIgcGFyc2VhciBjb21vIGtleT12YWx1ZVxuICAgICAgICBhY3Rpb24ucXVlcnlQYXJhbXMgPSB0aGlzLnBhcnNlUXVlcnlTdHJpbmcoZGF0YVsncXVlcnlfcGFyYW1zJ10pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERhdG9zIGFkaWNpb25hbGVzIGNvbiBwcmVmaWpvIGFjdGlvbl9cbiAgICBjb25zdCBhY3Rpb25EYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGEpKSB7XG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2FjdGlvbl8nKSAmJiBrZXkgIT09ICdhY3Rpb25fdHlwZScpIHtcbiAgICAgICAgY29uc3QgY2xlYW5LZXkgPSBrZXkucmVwbGFjZSgnYWN0aW9uXycsICcnKTtcbiAgICAgICAgLy8gSW50ZW50YXIgcGFyc2VhciBKU09OIHNpIGVzIHBvc2libGVcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhY3Rpb25EYXRhW2NsZWFuS2V5XSA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBhY3Rpb25EYXRhW2NsZWFuS2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKGFjdGlvbkRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgIGFjdGlvbi5hY3Rpb25EYXRhID0gYWN0aW9uRGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRlIG1hbnVhbG1lbnRlIHVuIGV2ZW50byBkZSBjbGljayBlbiBub3RpZmljYWNpw7NuLlxuICAgKlxuICAgKiDDmnRpbCBwYXJhIG1hbmVqYXIgY2xpY2tzIGVuIG5vdGlmaWNhY2lvbmVzIGZvcmVncm91bmQgZG9uZGVcbiAgICogbGEgYXBwIGRlY2lkZSBtb3N0cmFyIHVuIGJhbm5lciBjdXN0b20uXG4gICAqXG4gICAqIEBwYXJhbSBub3RpZmljYXRpb24gLSBQYXlsb2FkIGRlIGxhIG5vdGlmaWNhY2nDs25cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBtZXNzYWdpbmcub25NZXNzYWdlKCkuc3Vic2NyaWJlKG5vdGlmaWNhdGlvbiA9PiB7XG4gICAqICAgLy8gTW9zdHJhciBiYW5uZXIgY3VzdG9tXG4gICAqICAgdGhpcy5zaG93QmFubmVyKG5vdGlmaWNhdGlvbiwgKCkgPT4ge1xuICAgKiAgICAgLy8gVXN1YXJpbyBoaXpvIGNsaWNrIGVuIGVsIGJhbm5lclxuICAgKiAgICAgbWVzc2FnaW5nLmhhbmRsZU5vdGlmaWNhdGlvbkNsaWNrKG5vdGlmaWNhdGlvbik7XG4gICAqICAgfSk7XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGhhbmRsZU5vdGlmaWNhdGlvbkNsaWNrKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uUGF5bG9hZCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZXh0cmFjdEFjdGlvbkZyb21EYXRhKG5vdGlmaWNhdGlvbi5kYXRhKTtcblxuICAgIHRoaXMubm90aWZpY2F0aW9uQ2xpY2tTdWJqZWN0Lm5leHQoe1xuICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgYWN0aW9uLFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuYSBub3RpZmljYWNpw7NuIHRpZW5lIGFjY2nDs24gZGUgbmF2ZWdhY2nDs24uXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0b3MgZGVsIHBheWxvYWRcbiAgICogQHJldHVybnMgdHJ1ZSBzaSB0aWVuZSByb3V0ZSBvIHVybFxuICAgKi9cbiAgaGFzTmF2aWdhdGlvbkFjdGlvbihkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IGJvb2xlYW4ge1xuICAgIGlmICghZGF0YSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhIShkYXRhWydyb3V0ZSddIHx8IGRhdGFbJ3VybCddKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZWEgdW4gcXVlcnkgc3RyaW5nIGVuIHVuIG9iamV0by5cbiAgICovXG4gIHByaXZhdGUgcGFyc2VRdWVyeVN0cmluZyhxdWVyeVN0cmluZzogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBpZiAoIXF1ZXJ5U3RyaW5nKSByZXR1cm4gcGFyYW1zO1xuXG4gICAgLy8gUmVtb3ZlciA/IGluaWNpYWwgc2kgZXhpc3RlXG4gICAgY29uc3QgY2xlYW5RdWVyeSA9IHF1ZXJ5U3RyaW5nLnN0YXJ0c1dpdGgoJz8nKSA/IHF1ZXJ5U3RyaW5nLnNsaWNlKDEpIDogcXVlcnlTdHJpbmc7XG5cbiAgICBmb3IgKGNvbnN0IHBhaXIgb2YgY2xlYW5RdWVyeS5zcGxpdCgnJicpKSB7XG4gICAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBwYWlyLnNwbGl0KCc9Jyk7XG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHBhcmFtc1tkZWNvZGVVUklDb21wb25lbnQoa2V5KV0gPSBkZWNvZGVVUklDb21wb25lbnQodmFsdWUgfHwgJycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cbiJdfQ==
|
|
532
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL21lc3NhZ2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFvQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RGLE9BQU8sRUFBYyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFrQm5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFDVSxRQUFrQixFQUNlLE1BQTZCLEVBQ3pDLFVBQWtCLEVBQ3ZDLE1BQWM7UUFIZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2UsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUN2QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZGhCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFDcEQsNkJBQXdCLEdBQUcsSUFBSSxPQUFPLEVBQTBCLENBQUM7UUFDakUsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBaUI7WUFDekQsS0FBSyxFQUFFLElBQUk7WUFDWCxVQUFVLEVBQUUsU0FBUztZQUNyQixXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDLENBQUM7UUFVRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lB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R0FBMkIsRUFBRSxDQUFDO1FBRTFDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFFaEMsOEJBQThCO1FBQzlCLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUVwRixLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEUsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOytHQXZoQlUsZ0JBQWdCLDBDQWFqQix1QkFBdUIsYUFDdkIsV0FBVzttSEFkVixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBYzdCLE1BQU07MkJBQUMsdUJBQXVCOzswQkFDOUIsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZXNzYWdpbmcgU2VydmljZSAoRkNNKVxuICpcbiAqIFNlcnZpY2lvIHBhcmEgRmlyZWJhc2UgQ2xvdWQgTWVzc2FnaW5nIChQdXNoIE5vdGlmaWNhdGlvbnMpLlxuICogUGVybWl0ZSBzb2xpY2l0YXIgcGVybWlzb3MsIG9idGVuZXIgdG9rZW5zLCBlc2N1Y2hhciBtZW5zYWplcyB5IG1hbmVqYXJcbiAqIG5hdmVnYWNpw7NuIChkZWVwIGxpbmtpbmcpIGN1YW5kbyBlbCB1c3VhcmlvIHRvY2EgdW5hIG5vdGlmaWNhY2nDs24uXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdab25lLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWVzc2FnaW5nLCBnZXRUb2tlbiwgZGVsZXRlVG9rZW4sIG9uTWVzc2FnZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvbWVzc2FnaW5nJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBWQUxURUNIX0ZJUkVCQVNFX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7XG4gIE5vdGlmaWNhdGlvbkFjdGlvbixcbiAgTm90aWZpY2F0aW9uQ2xpY2tFdmVudCxcbiAgTm90aWZpY2F0aW9uUGF5bG9hZCxcbiAgTm90aWZpY2F0aW9uUGVybWlzc2lvbixcbiAgVmFsdGVjaEZpcmViYXNlQ29uZmlnLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBFc3RhZG8gaW50ZXJubyBkZWwgc2VydmljaW8gZGUgbWVzc2FnaW5nXG4gKi9cbmludGVyZmFjZSBNZXNzYWdpbmdTdGF0ZSB7XG4gIHRva2VuOiBzdHJpbmcgfCBudWxsO1xuICBwZXJtaXNzaW9uOiBOb3RpZmljYXRpb25QZXJtaXNzaW9uO1xuICBpc1N1cHBvcnRlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIEZpcmViYXNlIENsb3VkIE1lc3NhZ2luZyAoRkNNKS5cbiAqXG4gKiBQZXJtaXRlIHJlY2liaXIgbm90aWZpY2FjaW9uZXMgcHVzaCBlbiBsYSBhcGxpY2FjacOzbiB3ZWIuXG4gKiBSZXF1aWVyZSBWQVBJRCBrZXkgY29uZmlndXJhZGEgZW4gVmFsdGVjaEZpcmViYXNlQ29uZmlnLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkNvbXBvbmVudCB7XG4gKiAgIHByaXZhdGUgbWVzc2FnaW5nID0gaW5qZWN0KE1lc3NhZ2luZ1NlcnZpY2UpO1xuICpcbiAqICAgdG9rZW4gPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gKlxuICogICBhc3luYyBlbmFibGVOb3RpZmljYXRpb25zKCkge1xuICogICAgIC8vIFNvbGljaXRhciBwZXJtaXNvIHkgb2J0ZW5lciB0b2tlblxuICogICAgIGNvbnN0IHRva2VuID0gYXdhaXQgdGhpcy5tZXNzYWdpbmcucmVxdWVzdFBlcm1pc3Npb24oKTtcbiAqXG4gKiAgICAgaWYgKHRva2VuKSB7XG4gKiAgICAgICB0aGlzLnRva2VuLnNldCh0b2tlbik7XG4gKiAgICAgICAvLyBFbnZpYXIgdG9rZW4gYSB0dSBiYWNrZW5kIHBhcmEgYWxtYWNlbmFybG9cbiAqICAgICAgIGF3YWl0IHRoaXMuYmFja2VuZC5yZWdpc3RlckRldmljZVRva2VuKHRva2VuKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqXG4gKiAgIC8vIEVzY3VjaGFyIG1lbnNhamVzIGVuIGZvcmVncm91bmRcbiAqICAgbWVzc2FnZXMkID0gdGhpcy5tZXNzYWdpbmcub25NZXNzYWdlKCk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdpbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtZXNzYWdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PE5vdGlmaWNhdGlvblBheWxvYWQ+KCk7XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uQ2xpY2tTdWJqZWN0ID0gbmV3IFN1YmplY3Q8Tm90aWZpY2F0aW9uQ2xpY2tFdmVudD4oKTtcbiAgcHJpdmF0ZSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lc3NhZ2luZ1N0YXRlPih7XG4gICAgdG9rZW46IG51bGwsXG4gICAgcGVybWlzc2lvbjogJ2RlZmF1bHQnLFxuICAgIGlzU3VwcG9ydGVkOiBmYWxzZSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZU9uTWVzc2FnZT86ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQEluamVjdChWQUxURUNIX0ZJUkVCQVNFX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFZhbHRlY2hGaXJlYmFzZUNvbmZpZyxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZU1lc3NhZ2luZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgaW5zdGFuY2lhIGRlIE1lc3NhZ2luZyBkZSBmb3JtYSBwZXJlem9zYS5cbiAgICogRXN0byBldml0YSBlbCBlcnJvciBkZSBBUFBfSU5JVElBTElaRVIgZGUgQW5ndWxhckZpcmUuXG4gICAqL1xuICBwcml2YXRlIGdldE1lc3NhZ2luZ0luc3RhbmNlKCk6IE1lc3NhZ2luZyB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoTWVzc2FnaW5nLCBudWxsKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJTklDSUFMSVpBQ0nDk05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEluaWNpYWxpemEgZWwgc2VydmljaW8gZGUgbWVzc2FnaW5nXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemVNZXNzYWdpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3VwcG9ydGVkID0gYXdhaXQgdGhpcy5jaGVja1N1cHBvcnQoKTtcbiAgICBjb25zdCBwZXJtaXNzaW9uID0gdGhpcy5nZXRQZXJtaXNzaW9uU3RhdGUoKTtcblxuICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoe1xuICAgICAgLi4udGhpcy5zdGF0ZVN1YmplY3QudmFsdWUsXG4gICAgICBpc1N1cHBvcnRlZDogc3VwcG9ydGVkLFxuICAgICAgcGVybWlzc2lvbixcbiAgICB9KTtcblxuICAgIC8vIFNpIHlhIHRpZW5lIHBlcm1pc28sIGNvbmZpZ3VyYXIgbGlzdGVuZXJzXG4gICAgaWYgKHN1cHBvcnRlZCAmJiBwZXJtaXNzaW9uID09PSAnZ3JhbnRlZCcpIHtcbiAgICAgIHRoaXMuc2V0dXBNZXNzYWdlTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICAvLyBFc2N1Y2hhciBtZW5zYWplcyBkZWwgU2VydmljZSBXb3JrZXIgKGNsaWNrcyBlbiBub3RpZmljYWNpb25lcyBiYWNrZ3JvdW5kKVxuICAgIHRoaXMuc2V0dXBTZXJ2aWNlV29ya2VyTGlzdGVuZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmEgbGlzdGVuZXIgcGFyYSBtZW5zYWplcyBkZWwgU2VydmljZSBXb3JrZXIuXG4gICAqIFJlY2liZSBldmVudG9zIGN1YW5kbyBlbCB1c3VhcmlvIGhhY2UgY2xpY2sgZW4gdW5hIG5vdGlmaWNhY2nDs24gYmFja2dyb3VuZC5cbiAgICovXG4gIHByaXZhdGUgc2V0dXBTZXJ2aWNlV29ya2VyTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8ICEoJ3NlcnZpY2VXb3JrZXInIGluIG5hdmlnYXRvcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBWZXJpZmljYXIgcXVlIGVzIHVuIG1lbnNhamUgZGUgbm90aWZpY2FjacOzbiBjbGlja1xuICAgICAgaWYgKGV2ZW50LmRhdGE/LnR5cGUgPT09ICdOT1RJRklDQVRJT05fQ0xJQ0snKSB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uID0gZXZlbnQuZGF0YS5ub3RpZmljYXRpb24gYXMgTm90aWZpY2F0aW9uUGF5bG9hZDtcbiAgICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmV4dHJhY3RBY3Rpb25Gcm9tRGF0YShub3RpZmljYXRpb24uZGF0YSk7XG5cbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNsaWNrU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbixcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgRkNNIGVzdMOhIHNvcG9ydGFkbyBlbiBlbCBuYXZlZ2Fkb3IgYWN0dWFsXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNoZWNrU3VwcG9ydCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZmljYXIgQVBJcyBuZWNlc2FyaWFzXG4gICAgaWYgKCEoJ05vdGlmaWNhdGlvbicgaW4gd2luZG93KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghKCdzZXJ2aWNlV29ya2VyJyBpbiBuYXZpZ2F0b3IpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZpY2FyIHF1ZSBtZXNzYWdpbmcgZXN0w6kgZGlzcG9uaWJsZVxuICAgIGlmICghdGhpcy5nZXRNZXNzYWdpbmdJbnN0YW5jZSgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUEVSTUlTT1MgWSBUT0tFTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogU29saWNpdGEgcGVybWlzbyBkZSBub3RpZmljYWNpb25lcyB5IG9idGllbmUgZWwgdG9rZW4gRkNNLlxuICAgKlxuICAgKiBAcmV0dXJucyBUb2tlbiBGQ00gc2kgc2Ugb3RvcmfDsyBwZXJtaXNvLCBudWxsIHNpIHNlIGRlbmVnw7NcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB0b2tlbiA9IGF3YWl0IG1lc3NhZ2luZy5yZXF1ZXN0UGVybWlzc2lvbigpO1xuICAgKiBpZiAodG9rZW4pIHtcbiAgICogICBjb25zb2xlLmxvZygnVG9rZW4gRkNNOicsIHRva2VuKTtcbiAgICogICAvLyBFbnZpYXIgYSBiYWNrZW5kXG4gICAqIH0gZWxzZSB7XG4gICAqICAgY29uc29sZS5sb2coJ1Blcm1pc28gZGVuZWdhZG8gbyBubyBzb3BvcnRhZG8nKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHJlcXVlc3RQZXJtaXNzaW9uKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGlmICghYXdhaXQgdGhpcy5pc1N1cHBvcnRlZCgpKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0ZDTSBubyBlc3TDoSBzb3BvcnRhZG8gZW4gZXN0ZSBuYXZlZ2Fkb3InKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBTb2xpY2l0YXIgcGVybWlzbyBkZSBub3RpZmljYWNpb25lc1xuICAgICAgY29uc3QgcGVybWlzc2lvbiA9IGF3YWl0IE5vdGlmaWNhdGlvbi5yZXF1ZXN0UGVybWlzc2lvbigpO1xuXG4gICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5zdGF0ZVN1YmplY3QudmFsdWUsXG4gICAgICAgIHBlcm1pc3Npb246IHBlcm1pc3Npb24gYXMgTm90aWZpY2F0aW9uUGVybWlzc2lvbixcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocGVybWlzc2lvbiAhPT0gJ2dyYW50ZWQnKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUGVybWlzbyBkZSBub3RpZmljYWNpb25lcyBkZW5lZ2FkbycpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gT2J0ZW5lciB0b2tlbiBGQ01cbiAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgdGhpcy5nZXRUb2tlbigpO1xuXG4gICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgLy8gQ29uZmlndXJhciBsaXN0ZW5lciBkZSBtZW5zYWplc1xuICAgICAgICB0aGlzLnNldHVwTWVzc2FnZUxpc3RlbmVyKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc29saWNpdGFuZG8gcGVybWlzbyBkZSBub3RpZmljYWNpb25lczonLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBlbCB0b2tlbiBGQ00gYWN0dWFsIChzaW4gc29saWNpdGFyIHBlcm1pc28pLlxuICAgKlxuICAgKiBAcmV0dXJucyBUb2tlbiBGQ00gc2kgZXN0w6EgZGlzcG9uaWJsZSwgbnVsbCBzaSBub1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHRva2VuID0gYXdhaXQgbWVzc2FnaW5nLmdldFRva2VuKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0VG9rZW4oKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgbWVzc2FnaW5nID0gdGhpcy5nZXRNZXNzYWdpbmdJbnN0YW5jZSgpO1xuICAgIGlmICghbWVzc2FnaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB2YXBpZEtleSA9IHRoaXMuY29uZmlnLm1lc3NhZ2luZ1ZhcGlkS2V5O1xuICAgIGlmICghdmFwaWRLZXkpIHtcbiAgICAgIGNvbnNvbGUud2FybignVkFQSUQga2V5IG5vIGNvbmZpZ3VyYWRhLiBGQ00gbm8gZnVuY2lvbmFyw6EuJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gUmVnaXN0cmFyIFNXIHBlcnNvbmFsaXphZG8gYW50ZXMgZGUgb2J0ZW5lciB0b2tlblxuICAgICAgLy8gRXN0byBlcyBuZWNlc2FyaW8gY3VhbmRvIHVzYW1vcyB1biBTVyBjdXN0b20gKGZpcmViYXNlLW1lc3NhZ2luZy1zdy5qcylcbiAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvZmlyZWJhc2UtbWVzc2FnaW5nLXN3LmpzJyk7XG4gICAgICAvLyBFc3BlcmFyIGEgcXVlIGVsIFNXIGVzdMOpIGFjdGl2b1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVhZHk7XG5cbiAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgZ2V0VG9rZW4obWVzc2FnaW5nLCB7XG4gICAgICAgIHZhcGlkS2V5LFxuICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOiByZWdpc3RyYXRpb24sXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7XG4gICAgICAgIC4uLnRoaXMuc3RhdGVTdWJqZWN0LnZhbHVlLFxuICAgICAgICB0b2tlbixcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdG9rZW47XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9idGVuaWVuZG8gdG9rZW4gRkNNOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIGVsIHRva2VuIEZDTSBhY3R1YWwgKHVuc3Vic2NyaWJlIGRlIG5vdGlmaWNhY2lvbmVzKS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBtZXNzYWdpbmcuZGVsZXRlVG9rZW4oKTtcbiAgICogY29uc29sZS5sb2coJ1Rva2VuIGVsaW1pbmFkbywgbm8gcmVjaWJpcsOhIG3DoXMgbm90aWZpY2FjaW9uZXMnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBkZWxldGVUb2tlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtZXNzYWdpbmcgPSB0aGlzLmdldE1lc3NhZ2luZ0luc3RhbmNlKCk7XG4gICAgaWYgKCFtZXNzYWdpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlVG9rZW4obWVzc2FnaW5nKTtcblxuICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7XG4gICAgICAgIC4uLnRoaXMuc3RhdGVTdWJqZWN0LnZhbHVlLFxuICAgICAgICB0b2tlbjogbnVsbCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBMaW1waWFyIGxpc3RlbmVyIGRlIG1lbnNhamVzXG4gICAgICBpZiAodGhpcy51bnN1YnNjcmliZU9uTWVzc2FnZSkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlT25NZXNzYWdlKCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmVPbk1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGVsaW1pbmFuZG8gdG9rZW4gRkNNOicsIGVycm9yKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gc2UgcHVkbyBlbGltaW5hciBlbCB0b2tlbiBkZSBub3RpZmljYWNpb25lcycpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNRU5TQUpFU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBkZSBtZW5zYWplcyByZWNpYmlkb3MgZW4gZm9yZWdyb3VuZC5cbiAgICpcbiAgICogSU1QT1JUQU5URTogTG9zIG1lbnNhamVzIGVuIGJhY2tncm91bmQgc29uIG1hbmVqYWRvcyBwb3IgZWwgU2VydmljZSBXb3JrZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgcXVlIGVtaXRlIGN1YW5kbyBsbGVnYSB1biBtZW5zYWplIGVuIGZvcmVncm91bmRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBtZXNzYWdpbmcub25NZXNzYWdlKCkuc3Vic2NyaWJlKHBheWxvYWQgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKCdNZW5zYWplIHJlY2liaWRvOicsIHBheWxvYWQpO1xuICAgKiAgIC8vIE1vc3RyYXIgbm90aWZpY2FjacOzbiBjdXN0b20gbyBhY3R1YWxpemFyIFVJXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIG9uTWVzc2FnZSgpOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvblBheWxvYWQ+IHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmEgZWwgbGlzdGVuZXIgZGUgbWVuc2FqZXMgZW4gZm9yZWdyb3VuZFxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cE1lc3NhZ2VMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBjb25zdCBtZXNzYWdpbmcgPSB0aGlzLmdldE1lc3NhZ2luZ0luc3RhbmNlKCk7XG4gICAgaWYgKCFtZXNzYWdpbmcgfHwgdGhpcy51bnN1YnNjcmliZU9uTWVzc2FnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudW5zdWJzY3JpYmVPbk1lc3NhZ2UgPSBvbk1lc3NhZ2UobWVzc2FnaW5nLCAocGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25QYXlsb2FkID0ge1xuICAgICAgICB0aXRsZTogcGF5bG9hZC5ub3RpZmljYXRpb24/LnRpdGxlLFxuICAgICAgICBib2R5OiBwYXlsb2FkLm5vdGlmaWNhdGlvbj8uYm9keSxcbiAgICAgICAgaW1hZ2U6IHBheWxvYWQubm90aWZpY2F0aW9uPy5pbWFnZSxcbiAgICAgICAgZGF0YTogcGF5bG9hZC5kYXRhIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgICAgIG1lc3NhZ2VJZDogcGF5bG9hZC5tZXNzYWdlSWQsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLm1lc3NhZ2VTdWJqZWN0Lm5leHQobm90aWZpY2F0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFU1RBRE8gWSBVVElMSURBREVTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIGVzdGFkbyBhY3R1YWwgZGVsIHBlcm1pc28gZGUgbm90aWZpY2FjaW9uZXMuXG4gICAqXG4gICAqIEByZXR1cm5zICdncmFudGVkJyB8ICdkZW5pZWQnIHwgJ2RlZmF1bHQnXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcGVybWlzc2lvbiA9IG1lc3NhZ2luZy5nZXRQZXJtaXNzaW9uU3RhdGUoKTtcbiAgICogaWYgKHBlcm1pc3Npb24gPT09ICdncmFudGVkJykge1xuICAgKiAgIC8vIFlhIHRpZW5lIHBlcm1pc29cbiAgICogfSBlbHNlIGlmIChwZXJtaXNzaW9uID09PSAnZGVmYXVsdCcpIHtcbiAgICogICAvLyBQdWVkZSBzb2xpY2l0YXIgcGVybWlzb1xuICAgKiB9IGVsc2Uge1xuICAgKiAgIC8vIERlbmVnYWRvLCBkZWJlIGhhYmlsaXRhciBtYW51YWxtZW50ZVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZ2V0UGVybWlzc2lvblN0YXRlKCk6IE5vdGlmaWNhdGlvblBlcm1pc3Npb24ge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuICdkZWZhdWx0JztcbiAgICB9XG5cbiAgICBpZiAoISgnTm90aWZpY2F0aW9uJyBpbiB3aW5kb3cpKSB7XG4gICAgICByZXR1cm4gJ2RlbmllZCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIGFzIE5vdGlmaWNhdGlvblBlcm1pc3Npb247XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgRkNNIGVzdMOhIHNvcG9ydGFkbyBlbiBlbCBuYXZlZ2Fkb3IgYWN0dWFsLlxuICAgKlxuICAgKiBAcmV0dXJucyB0cnVlIHNpIEZDTSBlc3TDoSBzb3BvcnRhZG9cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpZiAoYXdhaXQgbWVzc2FnaW5nLmlzU3VwcG9ydGVkKCkpIHtcbiAgICogICAvLyBQdWVkZSB1c2FyIG5vdGlmaWNhY2lvbmVzIHB1c2hcbiAgICogfSBlbHNlIHtcbiAgICogICAvLyBOYXZlZ2Fkb3Igbm8gc29wb3J0YSBvIG5vIHRpZW5lIFNlcnZpY2UgV29ya2VyXG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBpc1N1cHBvcnRlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja1N1cHBvcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIHRva2VuIGFjdHVhbCBzaW4gaGFjZXIgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybnMgVG9rZW4gYWxtYWNlbmFkbyBvIG51bGxcbiAgICovXG4gIGdldCBjdXJyZW50VG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVTdWJqZWN0LnZhbHVlLnRva2VuO1xuICB9XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgZGVsIGVzdGFkbyBjb21wbGV0byBkZWwgc2VydmljaW8gZGUgbWVzc2FnaW5nLlxuICAgKi9cbiAgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPE1lc3NhZ2luZ1N0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIGVsIHVzdWFyaW8geWEgb3RvcmfDsyBwZXJtaXNvIGRlIG5vdGlmaWNhY2lvbmVzLlxuICAgKi9cbiAgZ2V0IGhhc1Blcm1pc3Npb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVTdWJqZWN0LnZhbHVlLnBlcm1pc3Npb24gPT09ICdncmFudGVkJztcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBERUVQIExJTktJTkcgLyBOQVZFR0FDScOTTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBkZSBjbGlja3MgZW4gbm90aWZpY2FjaW9uZXMuXG4gICAqXG4gICAqIEVtaXRlIGN1YW5kbyBlbCB1c3VhcmlvIGhhY2UgY2xpY2sgZW4gdW5hIG5vdGlmaWNhY2nDs24gKGZvcmVncm91bmQgbyBiYWNrZ3JvdW5kKS5cbiAgICogVXNhIGVzdGUgb2JzZXJ2YWJsZSBwYXJhIG5hdmVnYXIgYSBsYSBww6FnaW5hIGNvcnJlc3BvbmRpZW50ZS5cbiAgICpcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBxdWUgZW1pdGUgTm90aWZpY2F0aW9uQ2xpY2tFdmVudFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBDb21wb25lbnQoey4uLn0pXG4gICAqIGV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQge1xuICAgKiAgIHByaXZhdGUgbWVzc2FnaW5nID0gaW5qZWN0KE1lc3NhZ2luZ1NlcnZpY2UpO1xuICAgKiAgIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAqXG4gICAqICAgY29uc3RydWN0b3IoKSB7XG4gICAqICAgICB0aGlzLm1lc3NhZ2luZy5vbk5vdGlmaWNhdGlvbkNsaWNrKCkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICogICAgICAgaWYgKGV2ZW50LmFjdGlvbi5yb3V0ZSkge1xuICAgKiAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtldmVudC5hY3Rpb24ucm91dGVdLCB7XG4gICAqICAgICAgICAgICBxdWVyeVBhcmFtczogZXZlbnQuYWN0aW9uLnF1ZXJ5UGFyYW1zXG4gICAqICAgICAgICAgfSk7XG4gICAqICAgICAgIH1cbiAgICogICAgIH0pO1xuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIG9uTm90aWZpY2F0aW9uQ2xpY2soKTogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25DbGlja0V2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uQ2xpY2tTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhZSBsYSBhY2Npw7NuIGRlIG5hdmVnYWNpw7NuIGRlIGxvcyBkYXRvcyBkZSB1bmEgbm90aWZpY2FjacOzbi5cbiAgICpcbiAgICogQnVzY2EgY2FtcG9zIGVzcGVjw61maWNvcyBlbiBlbCBwYXlsb2FkIGRlIGRhdG9zOlxuICAgKiAtIGByb3V0ZWA6IFJ1dGEgaW50ZXJuYSBkZSBsYSBhcHAgKGVqOiAnL29yZGVycy8xMjMnKVxuICAgKiAtIGB1cmxgOiBVUkwgZXh0ZXJuYSAoZWo6ICdodHRwczovL2V4YW1wbGUuY29tJylcbiAgICogLSBgYWN0aW9uX3R5cGVgOiBUaXBvIGRlIGFjY2nDs24gcGVyc29uYWxpemFkYVxuICAgKiAtIENhbXBvcyBjb24gcHJlZmlqbyBgYWN0aW9uX2A6IERhdG9zIGFkaWNpb25hbGVzXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0b3MgZGVsIHBheWxvYWQgZGUgbGEgbm90aWZpY2FjacOzblxuICAgKiBAcmV0dXJucyBBY2Npw7NuIGRlIG5hdmVnYWNpw7NuIGV4dHJhw61kYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFBheWxvYWQgZGVzZGUgZWwgYmFja2VuZDpcbiAgICogLy8geyByb3V0ZTogJy9vcmRlcnMvMTIzJywgYWN0aW9uX3R5cGU6ICd2aWV3X29yZGVyJywgYWN0aW9uX29yZGVySWQ6ICcxMjMnIH1cbiAgICpcbiAgICogY29uc3QgYWN0aW9uID0gbWVzc2FnaW5nLmV4dHJhY3RBY3Rpb25Gcm9tRGF0YShub3RpZmljYXRpb24uZGF0YSk7XG4gICAqIC8vIHsgcm91dGU6ICcvb3JkZXJzLzEyMycsIGFjdGlvblR5cGU6ICd2aWV3X29yZGVyJywgYWN0aW9uRGF0YTogeyBvcmRlcklkOiAnMTIzJyB9IH1cbiAgICogYGBgXG4gICAqL1xuICBleHRyYWN0QWN0aW9uRnJvbURhdGEoZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBOb3RpZmljYXRpb25BY3Rpb24ge1xuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbjogTm90aWZpY2F0aW9uQWN0aW9uID0ge307XG5cbiAgICAvLyBSdXRhIGludGVybmFcbiAgICBpZiAoZGF0YVsncm91dGUnXSkge1xuICAgICAgYWN0aW9uLnJvdXRlID0gZGF0YVsncm91dGUnXTtcbiAgICB9XG5cbiAgICAvLyBVUkwgZXh0ZXJuYVxuICAgIGlmIChkYXRhWyd1cmwnXSkge1xuICAgICAgYWN0aW9uLnVybCA9IGRhdGFbJ3VybCddO1xuICAgIH1cblxuICAgIC8vIFRpcG8gZGUgYWNjacOzblxuICAgIGlmIChkYXRhWydhY3Rpb25fdHlwZSddKSB7XG4gICAgICBhY3Rpb24uYWN0aW9uVHlwZSA9IGRhdGFbJ2FjdGlvbl90eXBlJ107XG4gICAgfVxuXG4gICAgLy8gUXVlcnkgcGFyYW1zIChwdWVkZSB2ZW5pciBjb21vIEpTT04gc3RyaW5nKVxuICAgIGlmIChkYXRhWydxdWVyeV9wYXJhbXMnXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWN0aW9uLnF1ZXJ5UGFyYW1zID0gSlNPTi5wYXJzZShkYXRhWydxdWVyeV9wYXJhbXMnXSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gU2kgbm8gZXMgSlNPTiB2w6FsaWRvLCBpbnRlbnRhciBwYXJzZWFyIGNvbW8ga2V5PXZhbHVlXG4gICAgICAgIGFjdGlvbi5xdWVyeVBhcmFtcyA9IHRoaXMucGFyc2VRdWVyeVN0cmluZyhkYXRhWydxdWVyeV9wYXJhbXMnXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGF0b3MgYWRpY2lvbmFsZXMgY29uIHByZWZpam8gYWN0aW9uX1xuICAgIGNvbnN0IGFjdGlvbkRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YSkpIHtcbiAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnYWN0aW9uXycpICYmIGtleSAhPT0gJ2FjdGlvbl90eXBlJykge1xuICAgICAgICBjb25zdCBjbGVhbktleSA9IGtleS5yZXBsYWNlKCdhY3Rpb25fJywgJycpO1xuICAgICAgICAvLyBJbnRlbnRhciBwYXJzZWFyIEpTT04gc2kgZXMgcG9zaWJsZVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGFjdGlvbkRhdGFbY2xlYW5LZXldID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGFjdGlvbkRhdGFbY2xlYW5LZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoYWN0aW9uRGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgYWN0aW9uLmFjdGlvbkRhdGEgPSBhY3Rpb25EYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogRW1pdGUgbWFudWFsbWVudGUgdW4gZXZlbnRvIGRlIGNsaWNrIGVuIG5vdGlmaWNhY2nDs24uXG4gICAqXG4gICAqIMOadGlsIHBhcmEgbWFuZWphciBjbGlja3MgZW4gbm90aWZpY2FjaW9uZXMgZm9yZWdyb3VuZCBkb25kZVxuICAgKiBsYSBhcHAgZGVjaWRlIG1vc3RyYXIgdW4gYmFubmVyIGN1c3RvbS5cbiAgICpcbiAgICogQHBhcmFtIG5vdGlmaWNhdGlvbiAtIFBheWxvYWQgZGUgbGEgbm90aWZpY2FjacOzblxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIG1lc3NhZ2luZy5vbk1lc3NhZ2UoKS5zdWJzY3JpYmUobm90aWZpY2F0aW9uID0+IHtcbiAgICogICAvLyBNb3N0cmFyIGJhbm5lciBjdXN0b21cbiAgICogICB0aGlzLnNob3dCYW5uZXIobm90aWZpY2F0aW9uLCAoKSA9PiB7XG4gICAqICAgICAvLyBVc3VhcmlvIGhpem8gY2xpY2sgZW4gZWwgYmFubmVyXG4gICAqICAgICBtZXNzYWdpbmcuaGFuZGxlTm90aWZpY2F0aW9uQ2xpY2sobm90aWZpY2F0aW9uKTtcbiAgICogICB9KTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgaGFuZGxlTm90aWZpY2F0aW9uQ2xpY2sobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25QYXlsb2FkKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5leHRyYWN0QWN0aW9uRnJvbURhdGEobm90aWZpY2F0aW9uLmRhdGEpO1xuXG4gICAgdGhpcy5ub3RpZmljYXRpb25DbGlja1N1YmplY3QubmV4dCh7XG4gICAgICBub3RpZmljYXRpb24sXG4gICAgICBhY3Rpb24sXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW5hIG5vdGlmaWNhY2nDs24gdGllbmUgYWNjacOzbiBkZSBuYXZlZ2FjacOzbi5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRvcyBkZWwgcGF5bG9hZFxuICAgKiBAcmV0dXJucyB0cnVlIHNpIHRpZW5lIHJvdXRlIG8gdXJsXG4gICAqL1xuICBoYXNOYXZpZ2F0aW9uQWN0aW9uKGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogYm9vbGVhbiB7XG4gICAgaWYgKCFkYXRhKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICEhKGRhdGFbJ3JvdXRlJ10gfHwgZGF0YVsndXJsJ10pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlYSB1biBxdWVyeSBzdHJpbmcgZW4gdW4gb2JqZXRvLlxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVF1ZXJ5U3RyaW5nKHF1ZXJ5U3RyaW5nOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgIGlmICghcXVlcnlTdHJpbmcpIHJldHVybiBwYXJhbXM7XG5cbiAgICAvLyBSZW1vdmVyID8gaW5pY2lhbCBzaSBleGlzdGVcbiAgICBjb25zdCBjbGVhblF1ZXJ5ID0gcXVlcnlTdHJpbmcuc3RhcnRzV2l0aCgnPycpID8gcXVlcnlTdHJpbmcuc2xpY2UoMSkgOiBxdWVyeVN0cmluZztcblxuICAgIGZvciAoY29uc3QgcGFpciBvZiBjbGVhblF1ZXJ5LnNwbGl0KCcmJykpIHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IHBhaXIuc3BsaXQoJz0nKTtcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgcGFyYW1zW2RlY29kZVVSSUNvbXBvbmVudChrZXkpXSA9IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSB8fCAnJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuIl19
|