angular-odata 0.122.0 → 0.124.0
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/api.mjs +373 -0
- package/esm2022/lib/cache/cache.mjs +175 -0
- package/{esm2020 → esm2022}/lib/cache/storage.mjs +1 -1
- package/esm2022/lib/client.mjs +252 -0
- package/{esm2020 → esm2022}/lib/helper.mjs +1 -1
- package/{esm2020 → esm2022}/lib/loaders.mjs +1 -1
- package/esm2022/lib/models/collection.mjs +865 -0
- package/esm2022/lib/models/model.mjs +535 -0
- package/esm2022/lib/models/options.mjs +1117 -0
- package/{esm2020 → esm2022}/lib/module.mjs +5 -5
- package/esm2022/lib/resources/path/segments.mjs +124 -0
- package/esm2022/lib/resources/query/builder.mjs +624 -0
- package/esm2022/lib/resources/query/expressions/base.mjs +20 -0
- package/esm2022/lib/resources/query/expressions/compute.mjs +39 -0
- package/esm2022/lib/resources/query/expressions/count.mjs +99 -0
- package/esm2022/lib/resources/query/expressions/expand.mjs +125 -0
- package/esm2022/lib/resources/query/expressions/filter.mjs +161 -0
- package/esm2022/lib/resources/query/expressions/orderby.mjs +56 -0
- package/esm2022/lib/resources/query/expressions/search.mjs +122 -0
- package/esm2022/lib/resources/query/expressions/select.mjs +31 -0
- package/esm2022/lib/resources/query/expressions/syntax.mjs +444 -0
- package/{esm2020 → esm2022}/lib/resources/query/handlers.mjs +1 -1
- package/esm2022/lib/resources/query/options.mjs +115 -0
- package/{esm2020 → esm2022}/lib/resources/request.mjs +1 -1
- package/esm2022/lib/resources/resource.mjs +257 -0
- package/{esm2020 → esm2022}/lib/resources/responses/annotations.mjs +1 -1
- package/esm2022/lib/resources/responses/csdl/csdl-annotation.mjs +33 -0
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-entity-container.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-entity-set.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-enum-type.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-function-action.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-reference.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-schema.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-singleton.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-structural-property.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-structured-type.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-type-definition.mjs +1 -1
- package/esm2022/lib/resources/responses/metadata.mjs +547 -0
- package/{esm2020 → esm2022}/lib/resources/responses/response.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/action.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/batch.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/count.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/entity-set.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/entity.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/function.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/media.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/navigation-property.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/property.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/reference.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/singleton.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/value.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/annotation.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/callable.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/element.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/entity-container.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/enum-type.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/parsers/callable.mjs +1 -1
- package/esm2022/lib/schema/parsers/edm.mjs +99 -0
- package/{esm2020 → esm2022}/lib/schema/parsers/enum-type.mjs +2 -2
- package/esm2022/lib/schema/parsers/structured-type.mjs +502 -0
- package/{esm2020 → esm2022}/lib/schema/schema.mjs +1 -1
- package/esm2022/lib/schema/structured-type.mjs +207 -0
- package/esm2022/lib/services/base.mjs +29 -0
- package/{esm2020 → esm2022}/lib/services/entity-set.mjs +1 -1
- package/{esm2020 → esm2022}/lib/services/factory.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/singleton.mjs +1 -1
- package/{esm2020 → esm2022}/lib/settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/types.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/arrays.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/durations.mjs +1 -1
- package/esm2022/lib/utils/enums.mjs +61 -0
- package/{esm2020 → esm2022}/lib/utils/http.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/objects.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/odata.mjs +1 -1
- package/esm2022/lib/utils/types.mjs +136 -0
- package/{fesm2020 → fesm2022}/angular-odata.mjs +544 -373
- package/fesm2022/angular-odata.mjs.map +1 -0
- package/lib/helper.d.ts +1 -1
- package/lib/models/model.d.ts +4 -2
- package/lib/models/options.d.ts +7 -8
- package/lib/resources/path/segments.d.ts +15 -6
- package/lib/resources/query/builder.d.ts +21 -20
- package/lib/resources/query/expressions/base.d.ts +6 -4
- package/lib/resources/query/expressions/compute.d.ts +10 -8
- package/lib/resources/query/expressions/count.d.ts +14 -11
- package/lib/resources/query/expressions/expand.d.ts +23 -19
- package/lib/resources/query/expressions/filter.d.ts +22 -20
- package/lib/resources/query/expressions/orderby.d.ts +12 -9
- package/lib/resources/query/expressions/search.d.ts +12 -9
- package/lib/resources/query/expressions/select.d.ts +9 -7
- package/lib/resources/query/expressions/syntax.d.ts +75 -71
- package/lib/resources/query/handlers.d.ts +2 -2
- package/lib/resources/query/options.d.ts +15 -6
- package/lib/resources/resource.d.ts +2 -2
- package/lib/resources/responses/types.d.ts +3 -3
- package/lib/resources/types/options.d.ts +7 -7
- package/lib/schema/parsers/structured-type.d.ts +8 -5
- package/lib/schema/structured-type.d.ts +2 -1
- package/lib/types.d.ts +15 -15
- package/lib/utils/durations.d.ts +1 -1
- package/lib/utils/enums.d.ts +3 -0
- package/lib/utils/types.d.ts +1 -0
- package/package.json +9 -15
- package/esm2020/lib/api.mjs +0 -373
- package/esm2020/lib/cache/cache.mjs +0 -173
- package/esm2020/lib/client.mjs +0 -252
- package/esm2020/lib/models/collection.mjs +0 -861
- package/esm2020/lib/models/model.mjs +0 -507
- package/esm2020/lib/models/options.mjs +0 -1110
- package/esm2020/lib/resources/path/segments.mjs +0 -124
- package/esm2020/lib/resources/query/builder.mjs +0 -588
- package/esm2020/lib/resources/query/expressions/base.mjs +0 -20
- package/esm2020/lib/resources/query/expressions/compute.mjs +0 -39
- package/esm2020/lib/resources/query/expressions/count.mjs +0 -89
- package/esm2020/lib/resources/query/expressions/expand.mjs +0 -115
- package/esm2020/lib/resources/query/expressions/filter.mjs +0 -161
- package/esm2020/lib/resources/query/expressions/orderby.mjs +0 -56
- package/esm2020/lib/resources/query/expressions/search.mjs +0 -122
- package/esm2020/lib/resources/query/expressions/select.mjs +0 -31
- package/esm2020/lib/resources/query/expressions/syntax.mjs +0 -409
- package/esm2020/lib/resources/query/options.mjs +0 -115
- package/esm2020/lib/resources/resource.mjs +0 -251
- package/esm2020/lib/resources/responses/csdl/csdl-annotation.mjs +0 -33
- package/esm2020/lib/resources/responses/metadata.mjs +0 -547
- package/esm2020/lib/schema/parsers/edm.mjs +0 -104
- package/esm2020/lib/schema/parsers/structured-type.mjs +0 -490
- package/esm2020/lib/schema/structured-type.mjs +0 -202
- package/esm2020/lib/services/base.mjs +0 -29
- package/esm2020/lib/utils/enums.mjs +0 -45
- package/esm2020/lib/utils/types.mjs +0 -133
- package/fesm2015/angular-odata.mjs +0 -11811
- package/fesm2015/angular-odata.mjs.map +0 -1
- package/fesm2020/angular-odata.mjs.map +0 -1
- /package/{esm2020 → esm2022}/angular-odata.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/cache/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/cache/memory.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/path/handlers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/path/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/query/expressions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/query/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/responses/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/responses/options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/responses/types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/types/metadata.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/types/options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/schema/entity-set.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/schema/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/schema/parsers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/entity.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/arraybuffers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/dates.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/strings.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/urls.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -382,4 +382,4 @@ export class ODataQueryOptionsHandler {
|
|
|
382
382
|
this.paging(query);
|
|
383
383
|
}
|
|
384
384
|
}
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3F1ZXJ5L2hhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLEtBQUssRUFNTCxjQUFjLEVBQ2QsR0FBRyxFQUNILFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixnQkFBZ0IsRUFFaEIsaUJBQWlCLEVBRWpCLGdCQUFnQixFQUVoQixnQkFBZ0IsRUFFaEIsZ0JBQWdCLEdBRWpCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFBb0IsQ0FBd0IsRUFBVSxDQUFjO1FBQWhELE1BQUMsR0FBRCxDQUFDLENBQXVCO1FBQVUsTUFBQyxHQUFELENBQUMsQ0FBYTtJQUFHLENBQUM7SUFFeEU7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsQ0FBTztRQUNYLElB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QUFLLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtnQkFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5T3B0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cywgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1xuICBhbGlhcyxcbiAgRXhwYW5kLFxuICBGaWx0ZXIsXG4gIE9yZGVyQnksXG4gIFNlbGVjdCxcbiAgVHJhbnNmb3JtLFxuICBub3JtYWxpemVWYWx1ZSxcbiAgcmF3LFxuICBkdXJhdGlvbixcbiAgYmluYXJ5LFxufSBmcm9tICcuL2J1aWxkZXInO1xuaW1wb3J0IHtcbiAgQ29tcHV0ZUV4cHJlc3Npb24sXG4gIENvbXB1dGVFeHByZXNzaW9uQnVpbGRlcixcbiAgRmlsdGVyRXhwcmVzc2lvbixcbiAgRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXIsXG4gIE9yZGVyQnlFeHByZXNzaW9uLFxuICBPcmRlckJ5RXhwcmVzc2lvbkJ1aWxkZXIsXG4gIFNlYXJjaEV4cHJlc3Npb24sXG4gIFNlYXJjaEV4cHJlc3Npb25CdWlsZGVyLFxuICBFeHBhbmRFeHByZXNzaW9uLFxuICBFeHBhbmRFeHByZXNzaW9uQnVpbGRlcixcbiAgU2VsZWN0RXhwcmVzc2lvbixcbiAgU2VsZWN0RXhwcmVzc2lvbkJ1aWxkZXIsXG59IGZyb20gJy4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHR5cGUgeyBPRGF0YVF1ZXJ5QXJndW1lbnRzLCBPRGF0YVF1ZXJ5T3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbzogTWFwPFF1ZXJ5T3B0aW9uLCBhbnk+LCBwcml2YXRlIG46IFF1ZXJ5T3B0aW9uKSB7fVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqL1xuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbiB0byBhIGpzb24gb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLm8uZ2V0KHRoaXMubik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24gaXMgZW1wdHkuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uIGlzIGVtcHR5LlxuICAgKi9cbiAgZW1wdHkoKSB7XG4gICAgcmV0dXJuIFR5cGVzLmlzRW1wdHkodGhpcy5vLmdldCh0aGlzLm4pKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBQcmltaXRpdmUgVmFsdWVcbiAgLyoqXG4gICAqIEdldCBvciBTZXQgdGhlIHZhbHVlIG9mIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHYgVGhlIHZhbHVlIHRvIHNldC5cbiAgICogQHJldHVybnNcbiAgICovXG4gIHZhbHVlKHY/OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB0aGlzLm8uc2V0KHRoaXMubiwgdik7XG4gICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gQXJyYXkgVmFsdWVcbiAgcHJpdmF0ZSBhc3NlcnRBcnJheSgpOiBhbnlbXSB7XG4gICAgaWYgKCFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKSkpXG4gICAgICB0aGlzLm8uc2V0KHRoaXMubiwgdGhpcy5vLmhhcyh0aGlzLm4pID8gW3RoaXMuby5nZXQodGhpcy5uKV0gOiBbXSk7XG4gICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdXNoIHZhbHVlIHRvIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHB1c2hcbiAgICovXG4gIHB1c2godmFsdWU6IGFueSkge1xuICAgIHRoaXMuYXNzZXJ0QXJyYXkoKS5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdmFsdWUgZnJvbSB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byByZW1vdmVcbiAgICovXG4gIHJlbW92ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5vLnNldChcbiAgICAgIHRoaXMubixcbiAgICAgIHRoaXMuYXNzZXJ0QXJyYXkoKS5maWx0ZXIoKHYpID0+IHYgIT09IHZhbHVlKVxuICAgICk7XG4gICAgLy8gSWYgb25seSBvbmUgYW5kIG5vdCBpcyBhcnJheS4uLiBkb3duIHRvIHZhbHVlXG4gICAgaWYgKFxuICAgICAgdGhpcy5vLmdldCh0aGlzLm4pLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgIVR5cGVzLmlzQXJyYXkodGhpcy5vLmdldCh0aGlzLm4pWzBdKVxuICAgIClcbiAgICAgIHRoaXMuby5zZXQodGhpcy5uLCB0aGlzLm8uZ2V0KHRoaXMubilbMF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB2YWx1ZSBhdCBpbmRleCBvZiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgdmFsdWVcbiAgICogQHJldHVybnMgVGhlIHZhbHVlXG4gICAqL1xuICBhdChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKVtpbmRleF07XG4gIH1cblxuICBzb21lKHByZWRpY2F0ZTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5hc3NlcnRBcnJheSgpLnNvbWUocHJlZGljYXRlKTtcbiAgfVxuXG4gIGV2ZXJ5KHByZWRpY2F0ZTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5hc3NlcnRBcnJheSgpLmV2ZXJ5KHByZWRpY2F0ZSk7XG4gIH1cblxuICBmaW5kKHByZWRpY2F0ZTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5hc3NlcnRBcnJheSgpLmZpbmQocHJlZGljYXRlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gSGFzaE1hcCBWYWx1ZVxuICBwcml2YXRlIGFzc2VydE9iamVjdChjcmVhdGU6IGJvb2xlYW4pOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKFxuICAgICAgIVR5cGVzLmlzQXJyYXkodGhpcy5vLmdldCh0aGlzLm4pKSAmJlxuICAgICAgVHlwZXMuaXNQbGFpbk9iamVjdCh0aGlzLm8uZ2V0KHRoaXMubikpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGhpcy5vLmdldCh0aGlzLm4pO1xuICAgIH1cbiAgICBsZXQgYXJyID0gdGhpcy5hc3NlcnRBcnJheSgpO1xuICAgIGxldCBvYmogPSBhcnIuZmluZCgodikgPT4gVHlwZXMuaXNQbGFpbk9iamVjdCh2KSk7XG4gICAgaWYgKCFvYmogJiYgY3JlYXRlKSB7XG4gICAgICBvYmogPSB7fTtcbiAgICAgIGFyci5wdXNoKG9iaik7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB2YWx1ZSBmb3IgcGF0aCBpbiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSBwYXRoIFBhdGggZm9yIHNldCB0aGUgdmFsdWVcbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHNldFxuICAgKi9cbiAgc2V0KHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGxldCBvYmogPSB0aGlzLmFzc2VydE9iamVjdCh0cnVlKTtcbiAgICBPYmplY3RzLnNldChvYmosIHBhdGgsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhbHVlIGZvciBwYXRoIGZyb20gdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBmcm9tIGdldCB0aGUgdmFsdWVcbiAgICogQHBhcmFtIGRlZiBEZWZhdWx0IGlmIG5vdCBmb3VuZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0KHBhdGg6IHN0cmluZywgZGVmPzogYW55KTogYW55IHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QoZmFsc2UpIHx8IHt9O1xuICAgIHJldHVybiBPYmplY3RzLmdldChvYmosIHBhdGgsIGRlZik7XG4gIH1cblxuICAvKipcbiAgICogVW5zZXQgdGhlIHZhbHVlIGZvciBwYXRoIGluIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHBhdGhcbiAgICovXG4gIHVuc2V0KHBhdGg6IHN0cmluZykge1xuICAgIGxldCBvYmogPSB0aGlzLmFzc2VydE9iamVjdCh0cnVlKTtcbiAgICBPYmplY3RzLnVuc2V0KG9iaiwgcGF0aCk7XG5cbiAgICBpZiAoVHlwZXMuaXNBcnJheSh0aGlzLm8uZ2V0KHRoaXMubikpKSB7XG4gICAgICB0aGlzLm8uc2V0KFxuICAgICAgICB0aGlzLm4sXG4gICAgICAgIHRoaXMuby5nZXQodGhpcy5uKS5maWx0ZXIoKHY6IGFueSkgPT4gIVR5cGVzLmlzRW1wdHkodikpXG4gICAgICApO1xuICAgICAgaWYgKHRoaXMuby5nZXQodGhpcy5uKS5sZW5ndGggPT09IDEpXG4gICAgICAgIHRoaXMuby5zZXQodGhpcy5uLCB0aGlzLm8uZ2V0KHRoaXMubilbMF0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0IGlmIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbiBoYXMgdGhlIHZhbHVlLlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBmb3QgdGVzdCBpZiB0aGUgdmFsdWUgaXMgc2V0XG4gICAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgdmFsdWUgaXMgc2V0XG4gICAqL1xuICBoYXMocGF0aDogc3RyaW5nKSB7XG4gICAgbGV0IG9iaiA9IHRoaXMuYXNzZXJ0T2JqZWN0KGZhbHNlKSB8fCB7fTtcbiAgICByZXR1cm4gT2JqZWN0cy5oYXMob2JqLCBwYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSB2YWx1ZXMgZnJvbSBvYmplY3QgaW50byB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSB2YWx1ZXMgT2JqZWN0IHRvIG1lcmdlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhc3NpZ24odmFsdWVzOiB7IFthdHRyOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGxldCBvYmogPSB0aGlzLmFzc2VydE9iamVjdCh0cnVlKTtcbiAgICByZXR1cm4gT2JqZWN0cy5tZXJnZShvYmosIHZhbHVlcyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICovXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuby5kZWxldGUodGhpcy5uKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+IHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIG9wdGlvbnM6IE9EYXRhUXVlcnlPcHRpb25zPFQ+KSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSByYXcgb2RhdGEgdmFsdWVcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byByYXdcbiAgICogQHJldHVybnMgVGhlIHJhdyB2YWx1ZVxuICAgKi9cbiAgcmF3KHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gcmF3KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgb2RhdGEgYWxpYXMgcGFyYW1ldGVyXG4gICAqIEBsaW5rIGh0dHBzOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9vZGF0YS9vZGF0YS92NC4wMS9vZGF0YS12NC4wMS1wYXJ0Mi11cmwtY29udmVudGlvbnMuaHRtbCNzZWNfUGFyYW1ldGVyQWxpYXNlc1xuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBhbGlhc1xuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgYWxpYXNcbiAgICogQHJldHVybnMgVGhlIGFsaWFzXG4gICAqL1xuICBhbGlhcyh2YWx1ZTogYW55LCBuYW1lPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGFsaWFzKHZhbHVlLCBuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBkdXJhdGlvbiBvZGF0YSB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGR1cmF0aW9uXG4gICAqIEByZXR1cm5zIFRoZSBkdXJhdGlvbiB2YWx1ZVxuICAgKi9cbiAgZHVyYXRpb24odmFsdWU6IGFueSkge1xuICAgIHJldHVybiBkdXJhdGlvbih2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYmluYXJ5IG9kYXRhIHZhbHVlXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gYmluYXJ5XG4gICAqIEByZXR1cm5zIFRoZSBiaW5hcnkgdmFsdWVcbiAgICovXG4gIGJpbmFyeSh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIGJpbmFyeSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplIHRoZSBnaXZlbiB2YWx1ZSB0byBhIHZhbGlkIG9kYXRhIHZhbHVlXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gbm9ybWFsaXplXG4gICAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHZhbHVlXG4gICAqL1xuICBub3JtYWxpemUodmFsdWU6IGFueSkge1xuICAgIHJldHVybiBub3JtYWxpemVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJHNlbGVjdCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkc2VsZWN0LlxuICAgKiBAcGFyYW0gb3B0cyBTZWxlY3Q8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgU2VsZWN0RXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgc2VsZWN0KG9wdHM6IFNlbGVjdEV4cHJlc3Npb25CdWlsZGVyPFQ+KTogU2VsZWN0RXhwcmVzc2lvbjxUPjtcbiAgc2VsZWN0KG9wdHM6IFNlbGVjdDxUPik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBzZWxlY3QoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNlbGVjdChvcHRzPzogYW55KTogYW55IHtcbiAgICBpZiAoVHlwZXMuaXNGdW5jdGlvbihvcHRzKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICBRdWVyeU9wdGlvbi5zZWxlY3QsXG4gICAgICAgIFNlbGVjdEV4cHJlc3Npb24uc2VsZWN0KFxuICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oUXVlcnlPcHRpb24uc2VsZWN0KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxTZWxlY3Q8VD4+KFF1ZXJ5T3B0aW9uLnNlbGVjdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGV4cGFuZCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZXhwYW5kLlxuICAgKiBAcGFyYW0gb3B0cyBFeHBhbmQ8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgRXhwYW5kRXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgZXhwYW5kKG9wdHM6IEV4cGFuZEV4cHJlc3Npb25CdWlsZGVyPFQ+KTogRXhwYW5kRXhwcmVzc2lvbjxUPjtcbiAgZXhwYW5kKG9wdHM6IEV4cGFuZDxUPik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBleHBhbmQoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGV4cGFuZChvcHRzPzogYW55KTogYW55IHtcbiAgICBpZiAoVHlwZXMuaXNGdW5jdGlvbihvcHRzKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICBRdWVyeU9wdGlvbi5leHBhbmQsXG4gICAgICAgIEV4cGFuZEV4cHJlc3Npb24uZXhwYW5kKFxuICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oUXVlcnlPcHRpb24uZXhwYW5kKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxFeHBhbmQ8VD4+KFF1ZXJ5T3B0aW9uLmV4cGFuZCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGNvbXB1dGUgb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJGNvbXB1dGUuXG4gICAqIEBsaW5rIGh0dHBzOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9vZGF0YS9vZGF0YS92NC4wMS9vZGF0YS12NC4wMS1wYXJ0Mi11cmwtY29udmVudGlvbnMuaHRtbCNzZWNfU3lzdGVtUXVlcnlPcHRpb25jb21wdXRlXG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBvciBidWlsZGVyIGZ1bmN0aW9uIGZvciBDb21wdXRlRXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgY29tcHV0ZShcbiAgICBvcHRzOiAoXG4gICAgICBidWlsZGVyOiBDb21wdXRlRXhwcmVzc2lvbkJ1aWxkZXI8VD4sXG4gICAgICBjdXJyZW50PzogQ29tcHV0ZUV4cHJlc3Npb248VD5cbiAgICApID0+IENvbXB1dGVFeHByZXNzaW9uPFQ+XG4gICk6IENvbXB1dGVFeHByZXNzaW9uPFQ+O1xuICBjb21wdXRlKG9wdHM6IHN0cmluZyk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBjb21wdXRlKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBjb21wdXRlKG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLmNvbXB1dGUsXG4gICAgICAgIENvbXB1dGVFeHByZXNzaW9uLmNvbXB1dGUoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5jb21wdXRlKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxzdHJpbmc+KFF1ZXJ5T3B0aW9uLmNvbXB1dGUsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRmb3JtYXQgb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJGZvcm1hdC5cbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAxL29kYXRhLXY0LjAxLXBhcnQyLXVybC1jb252ZW50aW9ucy5odG1sI3NlY19TeXN0ZW1RdWVyeU9wdGlvbmZvcm1hdFxuICAgKiBAcGFyYW0gb3B0cyBzdHJpbmcgdmFsdWUgZm9yIGZvcm1hdFxuICAgKi9cbiAgZm9ybWF0KG9wdHM6IHN0cmluZyk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBmb3JtYXQoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZvcm1hdChvcHRzPzogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxzdHJpbmc+KFF1ZXJ5T3B0aW9uLmZvcm1hdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJHRyYW5zZm9ybSBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkdHJhbnNmb3JtLlxuICAgKiBAcGFyYW0gb3B0cyBzdHJpbmcgdmFsdWUgZm9yIHRyYW5zZm9ybVxuICAgKi9cbiAgdHJhbnNmb3JtKG9wdHM6IFRyYW5zZm9ybTxUPik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICB0cmFuc2Zvcm0oKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHRyYW5zZm9ybShvcHRzPzogVHJhbnNmb3JtPFQ+KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxUcmFuc2Zvcm08VD4+KFF1ZXJ5T3B0aW9uLnRyYW5zZm9ybSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJHNlYXJjaCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkc2VhcmNoLlxuICAgKiBAcGFyYW0gb3B0cyBzdHJpbmcgdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgU2VhcmNoRXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgc2VhcmNoKFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IFNlYXJjaEV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IFNlYXJjaEV4cHJlc3Npb248VD5cbiAgICApID0+IFNlYXJjaEV4cHJlc3Npb248VD5cbiAgKTogU2VhcmNoRXhwcmVzc2lvbjxUPjtcbiAgc2VhcmNoKG9wdHM6IHN0cmluZyk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBzZWFyY2goKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNlYXJjaChvcHRzPzogYW55KTogYW55IHtcbiAgICBpZiAoVHlwZXMuaXNGdW5jdGlvbihvcHRzKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICBRdWVyeU9wdGlvbi5zZWFyY2gsXG4gICAgICAgIFNlYXJjaEV4cHJlc3Npb24uc2VhcmNoKFxuICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oUXVlcnlPcHRpb24uc2VhcmNoKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxzdHJpbmc+KFF1ZXJ5T3B0aW9uLnNlYXJjaCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGZpbHRlciBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZmlsdGVyLlxuICAgKiBAcGFyYW0gb3B0cyBGaWx0ZXI8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgRmlsdGVyRXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgZmlsdGVyKFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IEZpbHRlckV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IEZpbHRlckV4cHJlc3Npb248VD5cbiAgICApID0+IEZpbHRlckV4cHJlc3Npb248VD5cbiAgKTogRmlsdGVyRXhwcmVzc2lvbjxUPjtcbiAgZmlsdGVyKG9wdHM6IEZpbHRlcjxUPik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBmaWx0ZXIoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZpbHRlcihvcHRzPzogYW55KTogYW55IHtcbiAgICBpZiAoVHlwZXMuaXNGdW5jdGlvbihvcHRzKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICBRdWVyeU9wdGlvbi5maWx0ZXIsXG4gICAgICAgIEZpbHRlckV4cHJlc3Npb24uZmlsdGVyKFxuICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oUXVlcnlPcHRpb24uZmlsdGVyKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxGaWx0ZXI8VD4+KFF1ZXJ5T3B0aW9uLmZpbHRlciwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJG9yZGVyYnkgb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJG9yZGVyYnkuXG4gICAqIEBwYXJhbSBvcHRzIE9yZGVyQnk8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgT3JkZXJCeUV4cHJlc3Npb248VD5cbiAgICovXG4gIG9yZGVyQnkoXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogT3JkZXJCeUV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IE9yZGVyQnlFeHByZXNzaW9uPFQ+XG4gICAgKSA9PiBPcmRlckJ5RXhwcmVzc2lvbjxUPlxuICApOiBPcmRlckJ5RXhwcmVzc2lvbjxUPjtcbiAgb3JkZXJCeShvcHRzOiBPcmRlckJ5PFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIG9yZGVyQnkoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIG9yZGVyQnkob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uKFxuICAgICAgICBRdWVyeU9wdGlvbi5vcmRlckJ5LFxuICAgICAgICBPcmRlckJ5RXhwcmVzc2lvbi5vcmRlckJ5KFxuICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oUXVlcnlPcHRpb24ub3JkZXJCeSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248T3JkZXJCeTxUPj4oUXVlcnlPcHRpb24ub3JkZXJCeSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJHRvcCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkdG9wLlxuICAgKiBAcGFyYW0gb3B0cyBudW1iZXIgdmFsdWVcbiAgICovXG4gIHRvcChvcHRzOiBudW1iZXIpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgdG9wKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICB0b3Aob3B0cz86IG51bWJlcik6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248bnVtYmVyPihRdWVyeU9wdGlvbi50b3AsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRza2lwIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRza2lwLlxuICAgKiBAcGFyYW0gb3B0cyBudW1iZXIgdmFsdWVcbiAgICovXG4gIHNraXAob3B0czogbnVtYmVyKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNraXAoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNraXAob3B0cz86IG51bWJlcik6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248bnVtYmVyPihRdWVyeU9wdGlvbi5za2lwLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkc2tpcHRva2VuIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRza2lwdG9rZW4uXG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZVxuICAgKi9cbiAgc2tpcHRva2VuKG9wdHM6IHN0cmluZyk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBza2lwdG9rZW4oKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNraXB0b2tlbihvcHRzPzogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxzdHJpbmc+KFF1ZXJ5T3B0aW9uLnNraXB0b2tlbiwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgZm9yIHNldCAkdG9wLCAkc2tpcCwgJHNraXB0b2tlbi5cbiAgICogQHBhcmFtIHBhcmFtMCBza2lwIG9yIHRvcCBvciBza2lwdG9rZW5cbiAgICovXG4gIHBhZ2luZyh7XG4gICAgc2tpcCxcbiAgICBza2lwdG9rZW4sXG4gICAgdG9wLFxuICB9OiB7XG4gICAgc2tpcD86IG51bWJlciB8IG51bGw7XG4gICAgc2tpcHRva2VuPzogc3RyaW5nIHwgbnVsbDtcbiAgICB0b3A/OiBudW1iZXIgfCBudWxsO1xuICB9ID0ge30pIHtcbiAgICBpZiAoc2tpcHRva2VuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChza2lwdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5za2lwdG9rZW4oc2tpcHRva2VuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5yZW1vdmUoUXVlcnlPcHRpb24uc2tpcHRva2VuKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNraXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHNraXAgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5za2lwKHNraXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi5za2lwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodG9wICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMudG9wKHRvcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnRvcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3J0Y3V0IGZvciBjbGVhciBwYWdpbmF0aW9uIGJ5IHVuc2V0ICR0b3AsICRza2lwLCAkc2tpcHRva2VuLlxuICAgKi9cbiAgY2xlYXJQYWdpbmcoKSB7XG4gICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi5za2lwKTtcbiAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnRvcCk7XG4gICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi5za2lwdG9rZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3J0Y3V0IGZvciBjbGVhciBxdWVyeS5cbiAgICovXG4gIGNsZWFyKCkge1xuICAgIHRoaXMub3B0aW9ucy5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJ1biB0aGUgcXVlcnkuXG4gICAqL1xuICBxdWVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRvUXVlcnlBcmd1bWVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGUgZ2l2ZW4gcXVlcnkgb3B0aW9ucyB0byB0aGUgY3VycmVudCBxdWVyeS5cbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBiZSBhcHBsaWVkLlxuICAgKi9cbiAgYXBwbHkocXVlcnk6IE9EYXRhUXVlcnlBcmd1bWVudHM8VD4pIHtcbiAgICBpZiAocXVlcnkuc2VsZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWVyeS5zZWxlY3QgaW5zdGFuY2VvZiBTZWxlY3RFeHByZXNzaW9uKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICAgIFF1ZXJ5T3B0aW9uLnNlbGVjdCxcbiAgICAgICAgICBxdWVyeS5zZWxlY3QgYXMgU2VsZWN0RXhwcmVzc2lvbjxUPlxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5zZWxlY3QgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5zZWxlY3QsIHF1ZXJ5LnNlbGVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNlbGVjdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5leHBhbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LmV4cGFuZCBpbnN0YW5jZW9mIEV4cGFuZEV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uZXhwYW5kLFxuICAgICAgICAgIHF1ZXJ5LmV4cGFuZCBhcyBFeHBhbmRFeHByZXNzaW9uPFQ+XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHF1ZXJ5LmV4cGFuZCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMub3B0aW9uKFF1ZXJ5T3B0aW9uLmV4cGFuZCwgcXVlcnkuZXhwYW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5yZW1vdmUoUXVlcnlPcHRpb24uZXhwYW5kKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHF1ZXJ5LmNvbXB1dGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LmNvbXB1dGUgaW5zdGFuY2VvZiBDb21wdXRlRXhwcmVzc2lvbikge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgICBRdWVyeU9wdGlvbi5jb21wdXRlLFxuICAgICAgICAgIHF1ZXJ5LmNvbXB1dGUgYXMgQ29tcHV0ZUV4cHJlc3Npb248VD5cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAocXVlcnkuY29tcHV0ZSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMub3B0aW9uKFF1ZXJ5T3B0aW9uLmNvbXB1dGUsIHF1ZXJ5LmNvbXB1dGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi5jb21wdXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHF1ZXJ5LnRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAocXVlcnkudHJhbnNmb3JtICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vcHRpb24oUXVlcnlPcHRpb24udHJhbnNmb3JtLCBxdWVyeS50cmFuc2Zvcm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi50cmFuc2Zvcm0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocXVlcnkuc2VhcmNoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWVyeS5zZWFyY2ggaW5zdGFuY2VvZiBTZWFyY2hFeHByZXNzaW9uKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICAgIFF1ZXJ5T3B0aW9uLnNlYXJjaCxcbiAgICAgICAgICBxdWVyeS5zZWFyY2ggYXMgU2VhcmNoRXhwcmVzc2lvbjxUPlxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5zZWFyY2ggIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5zZWFyY2gsIHF1ZXJ5LnNlYXJjaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNlYXJjaCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5maWx0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LmZpbHRlciBpbnN0YW5jZW9mIEZpbHRlckV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uZmlsdGVyLFxuICAgICAgICAgIHF1ZXJ5LmZpbHRlciBhcyBGaWx0ZXJFeHByZXNzaW9uPFQ+XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHF1ZXJ5LmZpbHRlciAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMub3B0aW9uKFF1ZXJ5T3B0aW9uLmZpbHRlciwgcXVlcnkuZmlsdGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5yZW1vdmUoUXVlcnlPcHRpb24uZmlsdGVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHF1ZXJ5Lm9yZGVyQnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5Lm9yZGVyQnkgaW5zdGFuY2VvZiBPcmRlckJ5RXhwcmVzc2lvbikge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgICBRdWVyeU9wdGlvbi5vcmRlckJ5LFxuICAgICAgICAgIHF1ZXJ5Lm9yZGVyQnkgYXMgT3JkZXJCeUV4cHJlc3Npb248VD5cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAocXVlcnkub3JkZXJCeSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMub3B0aW9uKFF1ZXJ5T3B0aW9uLm9yZGVyQnksIHF1ZXJ5Lm9yZGVyQnkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi5vcmRlckJ5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wYWdpbmcocXVlcnkpO1xuICB9XG59XG4iXX0=
|
|
385
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3F1ZXJ5L2hhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLEtBQUssRUFNTCxjQUFjLEVBQ2QsR0FBRyxFQUNILFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixnQkFBZ0IsRUFFaEIsaUJBQWlCLEVBRWpCLGdCQUFnQixFQUVoQixnQkFBZ0IsRUFFaEIsZ0JBQWdCLEdBRWpCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFDVSxDQUF3QixFQUN4QixDQUFjO1FBRGQsTUFBQyxHQUFELENBQUMsQ0FBdUI7UUFDeEIsTUFBQyxHQUFELENBQUMsQ0FBYTtJQUNyQixDQUFDO0lBRUo7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsQ0FBTztRQUNYLElB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QUFLLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtnQkFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9EYXRhU3RydWN0dXJlZFR5cGUgfSBmcm9tICcuLi8uLi9zY2hlbWEnO1xuaW1wb3J0IHsgUXVlcnlPcHRpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBPYmplY3RzLCBUeXBlcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIGFsaWFzLFxuICBFeHBhbmQsXG4gIEZpbHRlcixcbiAgT3JkZXJCeSxcbiAgU2VsZWN0LFxuICBUcmFuc2Zvcm0sXG4gIG5vcm1hbGl6ZVZhbHVlLFxuICByYXcsXG4gIGR1cmF0aW9uLFxuICBiaW5hcnksXG59IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQge1xuICBDb21wdXRlRXhwcmVzc2lvbixcbiAgQ29tcHV0ZUV4cHJlc3Npb25CdWlsZGVyLFxuICBGaWx0ZXJFeHByZXNzaW9uLFxuICBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlcixcbiAgT3JkZXJCeUV4cHJlc3Npb24sXG4gIE9yZGVyQnlFeHByZXNzaW9uQnVpbGRlcixcbiAgU2VhcmNoRXhwcmVzc2lvbixcbiAgU2VhcmNoRXhwcmVzc2lvbkJ1aWxkZXIsXG4gIEV4cGFuZEV4cHJlc3Npb24sXG4gIEV4cGFuZEV4cHJlc3Npb25CdWlsZGVyLFxuICBTZWxlY3RFeHByZXNzaW9uLFxuICBTZWxlY3RFeHByZXNzaW9uQnVpbGRlcixcbn0gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgdHlwZSB7IE9EYXRhUXVlcnlBcmd1bWVudHMsIE9EYXRhUXVlcnlPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvOiBNYXA8UXVlcnlPcHRpb24sIGFueT4sXG4gICAgcHJpdmF0ZSBuOiBRdWVyeU9wdGlvbixcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqL1xuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbiB0byBhIGpzb24gb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLm8uZ2V0KHRoaXMubik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24gaXMgZW1wdHkuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uIGlzIGVtcHR5LlxuICAgKi9cbiAgZW1wdHkoKSB7XG4gICAgcmV0dXJuIFR5cGVzLmlzRW1wdHkodGhpcy5vLmdldCh0aGlzLm4pKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBQcmltaXRpdmUgVmFsdWVcbiAgLyoqXG4gICAqIEdldCBvciBTZXQgdGhlIHZhbHVlIG9mIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHYgVGhlIHZhbHVlIHRvIHNldC5cbiAgICogQHJldHVybnNcbiAgICovXG4gIHZhbHVlKHY/OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB0aGlzLm8uc2V0KHRoaXMubiwgdik7XG4gICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gQXJyYXkgVmFsdWVcbiAgcHJpdmF0ZSBhc3NlcnRBcnJheSgpOiBhbnlbXSB7XG4gICAgaWYgKCFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKSkpXG4gICAgICB0aGlzLm8uc2V0KHRoaXMubiwgdGhpcy5vLmhhcyh0aGlzLm4pID8gW3RoaXMuby5nZXQodGhpcy5uKV0gOiBbXSk7XG4gICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdXNoIHZhbHVlIHRvIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHB1c2hcbiAgICovXG4gIHB1c2godmFsdWU6IGFueSkge1xuICAgIHRoaXMuYXNzZXJ0QXJyYXkoKS5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdmFsdWUgZnJvbSB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byByZW1vdmVcbiAgICovXG4gIHJlbW92ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5vLnNldChcbiAgICAgIHRoaXMubixcbiAgICAgIHRoaXMuYXNzZXJ0QXJyYXkoKS5maWx0ZXIoKHYpID0+IHYgIT09IHZhbHVlKSxcbiAgICApO1xuICAgIC8vIElmIG9ubHkgb25lIGFuZCBub3QgaXMgYXJyYXkuLi4gZG93biB0byB2YWx1ZVxuICAgIGlmIChcbiAgICAgIHRoaXMuby5nZXQodGhpcy5uKS5sZW5ndGggPT09IDEgJiZcbiAgICAgICFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKVswXSlcbiAgICApXG4gICAgICB0aGlzLm8uc2V0KHRoaXMubiwgdGhpcy5vLmdldCh0aGlzLm4pWzBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdmFsdWUgYXQgaW5kZXggb2YgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHZhbHVlXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZVxuICAgKi9cbiAgYXQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmFzc2VydEFycmF5KClbaW5kZXhdO1xuICB9XG5cbiAgc29tZShwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5zb21lKHByZWRpY2F0ZSk7XG4gIH1cblxuICBldmVyeShwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5ldmVyeShwcmVkaWNhdGUpO1xuICB9XG5cbiAgZmluZChwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5maW5kKHByZWRpY2F0ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIEhhc2hNYXAgVmFsdWVcbiAgcHJpdmF0ZSBhc3NlcnRPYmplY3QoY3JlYXRlOiBib29sZWFuKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmIChcbiAgICAgICFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKSkgJiZcbiAgICAgIFR5cGVzLmlzUGxhaW5PYmplY3QodGhpcy5vLmdldCh0aGlzLm4pKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgICB9XG4gICAgbGV0IGFyciA9IHRoaXMuYXNzZXJ0QXJyYXkoKTtcbiAgICBsZXQgb2JqID0gYXJyLmZpbmQoKHYpID0+IFR5cGVzLmlzUGxhaW5PYmplY3QodikpO1xuICAgIGlmICghb2JqICYmIGNyZWF0ZSkge1xuICAgICAgb2JqID0ge307XG4gICAgICBhcnIucHVzaChvYmopO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdmFsdWUgZm9yIHBhdGggaW4gdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKiBAcGFyYW0gcGF0aCBQYXRoIGZvciBzZXQgdGhlIHZhbHVlXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBzZXRcbiAgICovXG4gIHNldChwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QodHJ1ZSk7XG4gICAgT2JqZWN0cy5zZXQob2JqLCBwYXRoLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBmb3IgcGF0aCBmcm9tIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHBhdGggVGhlIHBhdGggZnJvbSBnZXQgdGhlIHZhbHVlXG4gICAqIEBwYXJhbSBkZWYgRGVmYXVsdCBpZiBub3QgZm91bmRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldChwYXRoOiBzdHJpbmcsIGRlZj86IGFueSk6IGFueSB7XG4gICAgbGV0IG9iaiA9IHRoaXMuYXNzZXJ0T2JqZWN0KGZhbHNlKSB8fCB7fTtcbiAgICByZXR1cm4gT2JqZWN0cy5nZXQob2JqLCBwYXRoLCBkZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc2V0IHRoZSB2YWx1ZSBmb3IgcGF0aCBpbiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSBwYXRoXG4gICAqL1xuICB1bnNldChwYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QodHJ1ZSk7XG4gICAgT2JqZWN0cy51bnNldChvYmosIHBhdGgpO1xuXG4gICAgaWYgKFR5cGVzLmlzQXJyYXkodGhpcy5vLmdldCh0aGlzLm4pKSkge1xuICAgICAgdGhpcy5vLnNldChcbiAgICAgICAgdGhpcy5uLFxuICAgICAgICB0aGlzLm8uZ2V0KHRoaXMubikuZmlsdGVyKCh2OiBhbnkpID0+ICFUeXBlcy5pc0VtcHR5KHYpKSxcbiAgICAgICk7XG4gICAgICBpZiAodGhpcy5vLmdldCh0aGlzLm4pLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgdGhpcy5vLnNldCh0aGlzLm4sIHRoaXMuby5nZXQodGhpcy5uKVswXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlc3QgaWYgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uIGhhcyB0aGUgdmFsdWUuXG4gICAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIGZvdCB0ZXN0IGlmIHRoZSB2YWx1ZSBpcyBzZXRcbiAgICogQHJldHVybnMgQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSB2YWx1ZSBpcyBzZXRcbiAgICovXG4gIGhhcyhwYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QoZmFsc2UpIHx8IHt9O1xuICAgIHJldHVybiBPYmplY3RzLmhhcyhvYmosIHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHZhbHVlcyBmcm9tIG9iamVjdCBpbnRvIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHZhbHVlcyBPYmplY3QgdG8gbWVyZ2VcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzc2lnbih2YWx1ZXM6IHsgW2F0dHI6IHN0cmluZ106IGFueSB9KSB7XG4gICAgbGV0IG9iaiA9IHRoaXMuYXNzZXJ0T2JqZWN0KHRydWUpO1xuICAgIHJldHVybiBPYmplY3RzLm1lcmdlKG9iaiwgdmFsdWVzKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5vLmRlbGV0ZSh0aGlzLm4pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVF1ZXJ5T3B0aW9uc0hhbmRsZXI8VD4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3B0aW9uczogT0RhdGFRdWVyeU9wdGlvbnM8VD4pIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJhdyBvZGF0YSB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHJhd1xuICAgKiBAcmV0dXJucyBUaGUgcmF3IHZhbHVlXG4gICAqL1xuICByYXcodmFsdWU6IGFueSkge1xuICAgIHJldHVybiByYXcodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBvZGF0YSBhbGlhcyBwYXJhbWV0ZXJcbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAxL29kYXRhLXY0LjAxLXBhcnQyLXVybC1jb252ZW50aW9ucy5odG1sI3NlY19QYXJhbWV0ZXJBbGlhc2VzXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGFsaWFzXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhbGlhc1xuICAgKiBAcmV0dXJucyBUaGUgYWxpYXNcbiAgICovXG4gIGFsaWFzKHZhbHVlOiBhbnksIG5hbWU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYWxpYXModmFsdWUsIG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGR1cmF0aW9uIG9kYXRhIHZhbHVlXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gZHVyYXRpb25cbiAgICogQHJldHVybnMgVGhlIGR1cmF0aW9uIHZhbHVlXG4gICAqL1xuICBkdXJhdGlvbih2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIGR1cmF0aW9uKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBiaW5hcnkgb2RhdGEgdmFsdWVcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBiaW5hcnlcbiAgICogQHJldHVybnMgVGhlIGJpbmFyeSB2YWx1ZVxuICAgKi9cbiAgYmluYXJ5KHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gYmluYXJ5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemUgdGhlIGdpdmVuIHZhbHVlIHRvIGEgdmFsaWQgb2RhdGEgdmFsdWVcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBub3JtYWxpemVcbiAgICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgdmFsdWVcbiAgICovXG4gIG5vcm1hbGl6ZSh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkc2VsZWN0IG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRzZWxlY3QuXG4gICAqIEBwYXJhbSBvcHRzIFNlbGVjdDxUPiB2YWx1ZSBvciBidWlsZGVyIGZ1bmN0aW9uIGZvciBTZWxlY3RFeHByZXNzaW9uPFQ+XG4gICAqL1xuICBzZWxlY3QoXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogU2VsZWN0RXhwcmVzc2lvbkJ1aWxkZXI8VD4sXG4gICAgICBjdXJyZW50PzogU2VsZWN0RXhwcmVzc2lvbjxUPixcbiAgICApID0+IFNlbGVjdEV4cHJlc3Npb248VD4sXG4gICk6IFNlbGVjdEV4cHJlc3Npb248VD47XG4gIHNlbGVjdChvcHRzOiBTZWxlY3Q8VD4pOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2VsZWN0KCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBzZWxlY3Qob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgUXVlcnlPcHRpb24uc2VsZWN0LFxuICAgICAgICBTZWxlY3RFeHByZXNzaW9uLnNlbGVjdChcbiAgICAgICAgICBvcHRzLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFF1ZXJ5T3B0aW9uLnNlbGVjdCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxTZWxlY3Q8VD4+KFF1ZXJ5T3B0aW9uLnNlbGVjdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGV4cGFuZCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZXhwYW5kLlxuICAgKiBAcGFyYW0gb3B0cyBFeHBhbmQ8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgRXhwYW5kRXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgZXhwYW5kKFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IEV4cGFuZEV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IEV4cGFuZEV4cHJlc3Npb248VD4sXG4gICAgKSA9PiBFeHBhbmRFeHByZXNzaW9uPFQ+LFxuICApOiBFeHBhbmRFeHByZXNzaW9uPFQ+O1xuICBleHBhbmQob3B0czogRXhwYW5kPFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGV4cGFuZCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZXhwYW5kKG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLmV4cGFuZCxcbiAgICAgICAgRXhwYW5kRXhwcmVzc2lvbi5leHBhbmQoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5leHBhbmQpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248RXhwYW5kPFQ+PihRdWVyeU9wdGlvbi5leHBhbmQsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRjb21wdXRlIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRjb21wdXRlLlxuICAgKiBAbGluayBodHRwczovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMDEvb2RhdGEtdjQuMDEtcGFydDItdXJsLWNvbnZlbnRpb25zLmh0bWwjc2VjX1N5c3RlbVF1ZXJ5T3B0aW9uY29tcHV0ZVxuICAgKiBAcGFyYW0gb3B0cyBzdHJpbmcgdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgQ29tcHV0ZUV4cHJlc3Npb248VD5cbiAgICovXG4gIGNvbXB1dGUoXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogQ29tcHV0ZUV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IENvbXB1dGVFeHByZXNzaW9uPFQ+LFxuICAgICkgPT4gQ29tcHV0ZUV4cHJlc3Npb248VD4sXG4gICk6IENvbXB1dGVFeHByZXNzaW9uPFQ+O1xuICBjb21wdXRlKG9wdHM6IHN0cmluZyk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBjb21wdXRlKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBjb21wdXRlKG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLmNvbXB1dGUsXG4gICAgICAgIENvbXB1dGVFeHByZXNzaW9uLmNvbXB1dGUoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5jb21wdXRlKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb24uY29tcHV0ZSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGZvcm1hdCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZm9ybWF0LlxuICAgKiBAbGluayBodHRwczovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMDEvb2RhdGEtdjQuMDEtcGFydDItdXJsLWNvbnZlbnRpb25zLmh0bWwjc2VjX1N5c3RlbVF1ZXJ5T3B0aW9uZm9ybWF0XG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBmb3IgZm9ybWF0XG4gICAqL1xuICBmb3JtYXQob3B0czogc3RyaW5nKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZvcm1hdCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZm9ybWF0KG9wdHM/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb24uZm9ybWF0LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkdHJhbnNmb3JtIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICR0cmFuc2Zvcm0uXG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBmb3IgdHJhbnNmb3JtXG4gICAqL1xuICB0cmFuc2Zvcm0ob3B0czogVHJhbnNmb3JtPFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHRyYW5zZm9ybSgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgdHJhbnNmb3JtKG9wdHM/OiBUcmFuc2Zvcm08VD4pOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPFRyYW5zZm9ybTxUPj4oUXVlcnlPcHRpb24udHJhbnNmb3JtLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkc2VhcmNoIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRzZWFyY2guXG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBvciBidWlsZGVyIGZ1bmN0aW9uIGZvciBTZWFyY2hFeHByZXNzaW9uPFQ+XG4gICAqL1xuICBzZWFyY2goXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogU2VhcmNoRXhwcmVzc2lvbkJ1aWxkZXI8VD4sXG4gICAgICBjdXJyZW50PzogU2VhcmNoRXhwcmVzc2lvbjxUPixcbiAgICApID0+IFNlYXJjaEV4cHJlc3Npb248VD4sXG4gICk6IFNlYXJjaEV4cHJlc3Npb248VD47XG4gIHNlYXJjaChvcHRzOiBzdHJpbmcpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2VhcmNoKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBzZWFyY2gob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgUXVlcnlPcHRpb24uc2VhcmNoLFxuICAgICAgICBTZWFyY2hFeHByZXNzaW9uLnNlYXJjaChcbiAgICAgICAgICBvcHRzLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFF1ZXJ5T3B0aW9uLnNlYXJjaCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxzdHJpbmc+KFF1ZXJ5T3B0aW9uLnNlYXJjaCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGZpbHRlciBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZmlsdGVyLlxuICAgKiBAcGFyYW0gb3B0cyBGaWx0ZXI8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgRmlsdGVyRXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgZmlsdGVyKFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IEZpbHRlckV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IEZpbHRlckV4cHJlc3Npb248VD4sXG4gICAgKSA9PiBGaWx0ZXJFeHByZXNzaW9uPFQ+LFxuICApOiBGaWx0ZXJFeHByZXNzaW9uPFQ+O1xuICBmaWx0ZXIob3B0czogRmlsdGVyPFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZpbHRlcigpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZmlsdGVyKG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLmZpbHRlcixcbiAgICAgICAgRmlsdGVyRXhwcmVzc2lvbi5maWx0ZXIoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5maWx0ZXIpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248RmlsdGVyPFQ+PihRdWVyeU9wdGlvbi5maWx0ZXIsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRvcmRlcmJ5IG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRvcmRlcmJ5LlxuICAgKiBAcGFyYW0gb3B0cyBPcmRlckJ5PFQ+IHZhbHVlIG9yIGJ1aWxkZXIgZnVuY3Rpb24gZm9yIE9yZGVyQnlFeHByZXNzaW9uPFQ+XG4gICAqL1xuICBvcmRlckJ5KFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IE9yZGVyQnlFeHByZXNzaW9uQnVpbGRlcjxUPixcbiAgICAgIGN1cnJlbnQ/OiBPcmRlckJ5RXhwcmVzc2lvbjxUPixcbiAgICApID0+IE9yZGVyQnlFeHByZXNzaW9uPFQ+LFxuICApOiBPcmRlckJ5RXhwcmVzc2lvbjxUPjtcbiAgb3JkZXJCeShvcHRzOiBPcmRlckJ5PFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIG9yZGVyQnkoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIG9yZGVyQnkob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uKFxuICAgICAgICBRdWVyeU9wdGlvbi5vcmRlckJ5LFxuICAgICAgICBPcmRlckJ5RXhwcmVzc2lvbi5vcmRlckJ5KFxuICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oUXVlcnlPcHRpb24ub3JkZXJCeSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxPcmRlckJ5PFQ+PihRdWVyeU9wdGlvbi5vcmRlckJ5LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkdG9wIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICR0b3AuXG4gICAqIEBwYXJhbSBvcHRzIG51bWJlciB2YWx1ZVxuICAgKi9cbiAgdG9wKG9wdHM6IG51bWJlcik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICB0b3AoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHRvcChvcHRzPzogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxudW1iZXI+KFF1ZXJ5T3B0aW9uLnRvcCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJHNraXAgb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJHNraXAuXG4gICAqIEBwYXJhbSBvcHRzIG51bWJlciB2YWx1ZVxuICAgKi9cbiAgc2tpcChvcHRzOiBudW1iZXIpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcChvcHRzPzogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxudW1iZXI+KFF1ZXJ5T3B0aW9uLnNraXAsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRza2lwdG9rZW4gb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJHNraXB0b2tlbi5cbiAgICogQHBhcmFtIG9wdHMgc3RyaW5nIHZhbHVlXG4gICAqL1xuICBza2lwdG9rZW4ob3B0czogc3RyaW5nKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNraXB0b2tlbigpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcHRva2VuKG9wdHM/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb24uc2tpcHRva2VuLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG9ydGN1dCBmb3Igc2V0ICR0b3AsICRza2lwLCAkc2tpcHRva2VuLlxuICAgKiBAcGFyYW0gcGFyYW0wIHNraXAgb3IgdG9wIG9yIHNraXB0b2tlblxuICAgKi9cbiAgcGFnaW5nKHtcbiAgICBza2lwLFxuICAgIHNraXB0b2tlbixcbiAgICB0b3AsXG4gIH06IHtcbiAgICBza2lwPzogbnVtYmVyIHwgbnVsbDtcbiAgICBza2lwdG9rZW4/OiBzdHJpbmcgfCBudWxsO1xuICAgIHRvcD86IG51bWJlciB8IG51bGw7XG4gIH0gPSB7fSkge1xuICAgIGlmIChza2lwdG9rZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHNraXB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNraXB0b2tlbihza2lwdG9rZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi5za2lwdG9rZW4pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2tpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoc2tpcCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNraXAoc2tpcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0b3AgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy50b3AodG9wKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5yZW1vdmUoUXVlcnlPcHRpb24udG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgZm9yIGNsZWFyIHBhZ2luYXRpb24gYnkgdW5zZXQgJHRvcCwgJHNraXAsICRza2lwdG9rZW4uXG4gICAqL1xuICBjbGVhclBhZ2luZygpIHtcbiAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXApO1xuICAgIHRoaXMub3B0aW9ucy5yZW1vdmUoUXVlcnlPcHRpb24udG9wKTtcbiAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXB0b2tlbik7XG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgZm9yIGNsZWFyIHF1ZXJ5LlxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5vcHRpb25zLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cnVuIHRoZSBxdWVyeS5cbiAgICovXG4gIHF1ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudG9RdWVyeUFyZ3VtZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoZSBnaXZlbiBxdWVyeSBvcHRpb25zIHRvIHRoZSBjdXJyZW50IHF1ZXJ5LlxuICAgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHRvIGJlIGFwcGxpZWQuXG4gICAqL1xuICBhcHBseShxdWVyeTogT0RhdGFRdWVyeUFyZ3VtZW50czxUPikge1xuICAgIGlmIChxdWVyeS5zZWxlY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LnNlbGVjdCBpbnN0YW5jZW9mIFNlbGVjdEV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uc2VsZWN0LFxuICAgICAgICAgIHF1ZXJ5LnNlbGVjdCBhcyBTZWxlY3RFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5zZWxlY3QgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5zZWxlY3QsIHF1ZXJ5LnNlbGVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNlbGVjdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5leHBhbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LmV4cGFuZCBpbnN0YW5jZW9mIEV4cGFuZEV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uZXhwYW5kLFxuICAgICAgICAgIHF1ZXJ5LmV4cGFuZCBhcyBFeHBhbmRFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5leHBhbmQgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5leHBhbmQsIHF1ZXJ5LmV4cGFuZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmV4cGFuZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5jb21wdXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWVyeS5jb21wdXRlIGluc3RhbmNlb2YgQ29tcHV0ZUV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uY29tcHV0ZSxcbiAgICAgICAgICBxdWVyeS5jb21wdXRlIGFzIENvbXB1dGVFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5jb21wdXRlICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vcHRpb24oUXVlcnlPcHRpb24uY29tcHV0ZSwgcXVlcnkuY29tcHV0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmNvbXB1dGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocXVlcnkudHJhbnNmb3JtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWVyeS50cmFuc2Zvcm0gIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi50cmFuc2Zvcm0sIHF1ZXJ5LnRyYW5zZm9ybSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnRyYW5zZm9ybSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5zZWFyY2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LnNlYXJjaCBpbnN0YW5jZW9mIFNlYXJjaEV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uc2VhcmNoLFxuICAgICAgICAgIHF1ZXJ5LnNlYXJjaCBhcyBTZWFyY2hFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5zZWFyY2ggIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5zZWFyY2gsIHF1ZXJ5LnNlYXJjaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNlYXJjaCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5maWx0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LmZpbHRlciBpbnN0YW5jZW9mIEZpbHRlckV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uZmlsdGVyLFxuICAgICAgICAgIHF1ZXJ5LmZpbHRlciBhcyBGaWx0ZXJFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5maWx0ZXIgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5maWx0ZXIsIHF1ZXJ5LmZpbHRlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5vcmRlckJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWVyeS5vcmRlckJ5IGluc3RhbmNlb2YgT3JkZXJCeUV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24ub3JkZXJCeSxcbiAgICAgICAgICBxdWVyeS5vcmRlckJ5IGFzIE9yZGVyQnlFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5vcmRlckJ5ICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vcHRpb24oUXVlcnlPcHRpb24ub3JkZXJCeSwgcXVlcnkub3JkZXJCeSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLm9yZGVyQnkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBhZ2luZyhxdWVyeSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { QueryOption } from '../../types';
|
|
2
|
+
import { Objects, Types } from '../../utils';
|
|
3
|
+
import { buildPathAndQuery, raw, } from './builder';
|
|
4
|
+
import { ODataQueryOptionHandler } from './handlers';
|
|
5
|
+
export class ODataQueryOptions {
|
|
6
|
+
constructor(values) {
|
|
7
|
+
this.values =
|
|
8
|
+
values instanceof Map
|
|
9
|
+
? values
|
|
10
|
+
: new Map(Object.entries(values || {}));
|
|
11
|
+
}
|
|
12
|
+
// Params
|
|
13
|
+
pathAndParams({ escape, parser, } = {}) {
|
|
14
|
+
let aliases = [];
|
|
15
|
+
let options = [
|
|
16
|
+
QueryOption.select,
|
|
17
|
+
QueryOption.filter,
|
|
18
|
+
QueryOption.search,
|
|
19
|
+
QueryOption.compute,
|
|
20
|
+
QueryOption.transform,
|
|
21
|
+
QueryOption.orderBy,
|
|
22
|
+
QueryOption.top,
|
|
23
|
+
QueryOption.skip,
|
|
24
|
+
QueryOption.skiptoken,
|
|
25
|
+
QueryOption.expand,
|
|
26
|
+
QueryOption.format,
|
|
27
|
+
QueryOption.levels,
|
|
28
|
+
QueryOption.count,
|
|
29
|
+
]
|
|
30
|
+
.filter((key) => !Types.isEmpty(this.values.get(key)))
|
|
31
|
+
.reduce((acc, key) => {
|
|
32
|
+
let value = this.values.get(key);
|
|
33
|
+
if (Types.rawType(value).endsWith('Expression') ||
|
|
34
|
+
(Types.isArray(value) &&
|
|
35
|
+
value.some((v) => Types.rawType(v).endsWith('Expression')))) {
|
|
36
|
+
value = Types.isArray(value)
|
|
37
|
+
? value.map((v) => Types.rawType(v).endsWith('Expression')
|
|
38
|
+
? raw(v.render({ aliases, escape, parser }))
|
|
39
|
+
: v)
|
|
40
|
+
: raw(value.render({ aliases, escape, parser }));
|
|
41
|
+
}
|
|
42
|
+
return Object.assign(acc, { [key]: value });
|
|
43
|
+
}, {});
|
|
44
|
+
return buildPathAndQuery({ ...options, aliases, escape });
|
|
45
|
+
}
|
|
46
|
+
toString({ escape, parser, } = {}) {
|
|
47
|
+
const [path, params] = this.pathAndParams({ escape, parser });
|
|
48
|
+
return (path +
|
|
49
|
+
Object.entries(params)
|
|
50
|
+
.filter(([, value]) => !Types.isEmpty(value))
|
|
51
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
52
|
+
.join('&'));
|
|
53
|
+
}
|
|
54
|
+
toJSON() {
|
|
55
|
+
return [...this.values.keys()].reduce((acc, key) => {
|
|
56
|
+
let value = this.values.get(key);
|
|
57
|
+
value = 'toJSON' in value ? value.toJSON() : value;
|
|
58
|
+
return Object.assign(acc, { [key]: value });
|
|
59
|
+
}, {});
|
|
60
|
+
}
|
|
61
|
+
toQueryArguments() {
|
|
62
|
+
return {
|
|
63
|
+
select: this.values.get(QueryOption.select) || null,
|
|
64
|
+
expand: this.values.get(QueryOption.expand) || null,
|
|
65
|
+
transform: this.values.get(QueryOption.transform) || null,
|
|
66
|
+
compute: this.values.get(QueryOption.compute) || null,
|
|
67
|
+
search: this.values.get(QueryOption.search) || null,
|
|
68
|
+
filter: this.values.get(QueryOption.filter) || null,
|
|
69
|
+
orderBy: this.values.get(QueryOption.orderBy) || null,
|
|
70
|
+
top: this.values.get(QueryOption.top) || null,
|
|
71
|
+
skip: this.values.get(QueryOption.skip) || null,
|
|
72
|
+
skiptoken: this.values.get(QueryOption.skiptoken) || null,
|
|
73
|
+
levels: this.values.get(QueryOption.levels) || null,
|
|
74
|
+
count: this.values.get(QueryOption.count) || null,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
clone() {
|
|
78
|
+
return new ODataQueryOptions(Objects.clone(this.values));
|
|
79
|
+
}
|
|
80
|
+
// Set Renderable
|
|
81
|
+
expression(key, exp) {
|
|
82
|
+
if (exp !== undefined)
|
|
83
|
+
this.values.set(key, exp);
|
|
84
|
+
return this.values.get(key);
|
|
85
|
+
}
|
|
86
|
+
// Option Handler
|
|
87
|
+
option(key, opts) {
|
|
88
|
+
if (opts !== undefined)
|
|
89
|
+
this.values.set(key, opts);
|
|
90
|
+
return new ODataQueryOptionHandler(this.values, key);
|
|
91
|
+
}
|
|
92
|
+
// Query Options tools
|
|
93
|
+
has(key) {
|
|
94
|
+
return this.values.has(key);
|
|
95
|
+
}
|
|
96
|
+
remove(...keys) {
|
|
97
|
+
[...this.values.keys()]
|
|
98
|
+
.filter((k) => keys.indexOf(k) !== -1)
|
|
99
|
+
.forEach((key) => {
|
|
100
|
+
this.values.delete(key);
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
keep(...keys) {
|
|
104
|
+
[...this.values.keys()]
|
|
105
|
+
.filter((k) => keys.indexOf(k) === -1)
|
|
106
|
+
.forEach((key) => {
|
|
107
|
+
this.values.delete(key);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
// Clear
|
|
111
|
+
clear() {
|
|
112
|
+
this.values.clear();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcXVlcnkvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFDTCxpQkFBaUIsRUFLakIsR0FBRyxHQUdKLE1BQU0sV0FBVyxDQUFDO0FBVW5CLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQWtCckQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUFZLE1BQXdEO1FBQ2xFLElBQUksQ0FBQyxNQUFNO1lBQ1QsTUFBTSxZQUFZLEdBQUc7Z0JBQ25CLENBQUMsQ0FBQyxNQUFNO2dCQUNSLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQThCLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsU0FBUztJQUNULGFBQWEsQ0FBQyxFQUNaLE1BQU0sRUFDTixNQUFNLE1BQ3NDLEVBQUU7UUFJOUMsSUFBSSxPQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLE9BQU8sR0FBRztZQUNaLFdBQVcsQ0FBQyxNQUFNO1lBQ2xCLFdBQVcsQ0FBQyxNQUFNO1lBQ2xCLFdBQVcsQ0FBQyxNQUFNO1lBQ2xCLFdBQVcsQ0FBQyxPQUFPO1lBQ25CLFdBQVcsQ0FBQyxTQUFTO1lBQ3JCLFdBQVcsQ0FBQyxPQUFPO1lBQ25CLFdBQVcsQ0FBQyxHQUFHO1lBQ2YsV0FBVyxDQUFDLElBQUk7WUFDaEIsV0FBVyxDQUFDLFNBQVM7WUFDckIsV0FBVyxDQUFDLE1BQU07WUFDbEIsV0FBVyxDQUFDLE1BQU07WUFDbEIsV0FBVyxDQUFDLE1BQU07WUFDbEIsV0FBVyxDQUFDLEtBQUs7U0FDbEI7YUFDRSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3JELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNuQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxJQUNFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztnQkFDM0MsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFDbkIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNsRTtnQkFDQSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7b0JBQzFCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBZ0IsRUFBRSxFQUFFLENBQzdCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQzt3QkFDckMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO3dCQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUNOO29CQUNILENBQUMsQ0FBQyxHQUFHLENBQUUsS0FBdUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN2RTtZQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsT0FBTyxpQkFBaUIsQ0FBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxRQUFRLENBQUMsRUFDUCxNQUFNLEVBQ04sTUFBTSxNQUNzQyxFQUFFO1FBQzlDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE9BQU8sQ0FDTCxJQUFJO1lBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7aUJBQ25CLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM1QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7aUJBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2pELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLEtBQUssR0FBRyxRQUFRLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNuRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJO1lBQ25ELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSTtZQUNuRCxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUk7WUFDekQsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJO1lBQ3JELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSTtZQUNuRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUk7WUFDbkQsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJO1lBQ3JELEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSTtZQUM3QyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUk7WUFDL0MsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJO1lBQ3pELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSTtZQUNuRCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUk7U0FDeEIsQ0FBQztJQUM5QixDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxpQkFBaUIsQ0FBSSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxpQkFBaUI7SUFDakIsVUFBVSxDQUFDLEdBQWdCLEVBQUUsR0FBbUI7UUFDOUMsSUFBSSxHQUFHLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQkFBaUI7SUFDakIsTUFBTSxDQUFJLEdBQWdCLEVBQUUsSUFBUTtRQUNsQyxJQUFJLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSx1QkFBdUIsQ0FBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsR0FBRyxDQUFDLEdBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLElBQW1CO1FBQzNCLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNyQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFHLElBQW1CO1FBQ3pCLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNyQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7SUFDUixLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZXIsIFF1ZXJ5T3B0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cywgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1xuICBidWlsZFBhdGhBbmRRdWVyeSxcbiAgRXhwYW5kLFxuICBGaWx0ZXIsXG4gIE9yZGVyQnksXG4gIFF1ZXJ5Q3VzdG9tVHlwZSxcbiAgcmF3LFxuICBTZWxlY3QsXG4gIFRyYW5zZm9ybSxcbn0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7XG4gIENvbXB1dGVFeHByZXNzaW9uLFxuICBFeHByZXNzaW9uLFxuICBGaWx0ZXJFeHByZXNzaW9uLFxuICBPcmRlckJ5RXhwcmVzc2lvbixcbiAgU2VhcmNoRXhwcmVzc2lvbixcbn0gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBFeHBhbmRFeHByZXNzaW9uIH0gZnJvbSAnLi9leHByZXNzaW9ucy9leHBhbmQnO1xuaW1wb3J0IHsgU2VsZWN0RXhwcmVzc2lvbiB9IGZyb20gJy4vZXhwcmVzc2lvbnMvc2VsZWN0JztcbmltcG9ydCB7IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyIH0gZnJvbSAnLi9oYW5kbGVycyc7XG5cbmV4cG9ydCB0eXBlIE9EYXRhUXVlcnlBcmd1bWVudHM8VD4gPSB7XG4gIFtRdWVyeU9wdGlvbi5zZWxlY3RdPzogU2VsZWN0PFQ+IHwgU2VsZWN0RXhwcmVzc2lvbjxUPiB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbi5leHBhbmRdPzogRXhwYW5kPFQ+IHwgRXhwYW5kRXhwcmVzc2lvbjxUPiB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbi5jb21wdXRlXT86IHN0cmluZyB8IENvbXB1dGVFeHByZXNzaW9uPFQ+IHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLmZpbHRlcl0/OiBGaWx0ZXI8VD4gfCBGaWx0ZXJFeHByZXNzaW9uPFQ+IHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLnNlYXJjaF0/OiBzdHJpbmcgfCBTZWFyY2hFeHByZXNzaW9uPFQ+IHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLnRyYW5zZm9ybV0/OiBUcmFuc2Zvcm08VD4gfCBudWxsO1xuICBbUXVlcnlPcHRpb24ub3JkZXJCeV0/OiBPcmRlckJ5PFQ+IHwgT3JkZXJCeUV4cHJlc3Npb248VD4gfCBudWxsO1xuICBbUXVlcnlPcHRpb24udG9wXT86IG51bWJlciB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbi5za2lwXT86IG51bWJlciB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbi5za2lwdG9rZW5dPzogc3RyaW5nIHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLmZvcm1hdF0/OiBzdHJpbmcgfCBudWxsO1xuICBbUXVlcnlPcHRpb24ubGV2ZWxzXT86IG51bWJlciB8ICdtYXgnIHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLmNvdW50XT86IGJvb2xlYW4gfCBudWxsO1xufTtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUXVlcnlPcHRpb25zPFQ+IHtcbiAgdmFsdWVzOiBNYXA8UXVlcnlPcHRpb24sIGFueT47XG5cbiAgY29uc3RydWN0b3IodmFsdWVzPzogTWFwPFF1ZXJ5T3B0aW9uLCBhbnk+IHwgeyBbbmFtZTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLnZhbHVlcyA9XG4gICAgICB2YWx1ZXMgaW5zdGFuY2VvZiBNYXBcbiAgICAgICAgPyB2YWx1ZXNcbiAgICAgICAgOiBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHZhbHVlcyB8fCB7fSkgYXMgQXJyYXk8W1F1ZXJ5T3B0aW9uLCBhbnldPik7XG4gIH1cblxuICAvLyBQYXJhbXNcbiAgcGF0aEFuZFBhcmFtcyh7XG4gICAgZXNjYXBlLFxuICAgIHBhcnNlcixcbiAgfTogeyBlc2NhcGU/OiBib29sZWFuOyBwYXJzZXI/OiBQYXJzZXI8VD4gfSA9IHt9KTogW1xuICAgIHN0cmluZyxcbiAgICB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSxcbiAgXSB7XG4gICAgbGV0IGFsaWFzZXM6IFF1ZXJ5Q3VzdG9tVHlwZVtdID0gW107XG4gICAgbGV0IG9wdGlvbnMgPSBbXG4gICAgICBRdWVyeU9wdGlvbi5zZWxlY3QsXG4gICAgICBRdWVyeU9wdGlvbi5maWx0ZXIsXG4gICAgICBRdWVyeU9wdGlvbi5zZWFyY2gsXG4gICAgICBRdWVyeU9wdGlvbi5jb21wdXRlLFxuICAgICAgUXVlcnlPcHRpb24udHJhbnNmb3JtLFxuICAgICAgUXVlcnlPcHRpb24ub3JkZXJCeSxcbiAgICAgIFF1ZXJ5T3B0aW9uLnRvcCxcbiAgICAgIFF1ZXJ5T3B0aW9uLnNraXAsXG4gICAgICBRdWVyeU9wdGlvbi5za2lwdG9rZW4sXG4gICAgICBRdWVyeU9wdGlvbi5leHBhbmQsXG4gICAgICBRdWVyeU9wdGlvbi5mb3JtYXQsXG4gICAgICBRdWVyeU9wdGlvbi5sZXZlbHMsXG4gICAgICBRdWVyeU9wdGlvbi5jb3VudCxcbiAgICBdXG4gICAgICAuZmlsdGVyKChrZXkpID0+ICFUeXBlcy5pc0VtcHR5KHRoaXMudmFsdWVzLmdldChrZXkpKSlcbiAgICAgIC5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWVzLmdldChrZXkpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgVHlwZXMucmF3VHlwZSh2YWx1ZSkuZW5kc1dpdGgoJ0V4cHJlc3Npb24nKSB8fFxuICAgICAgICAgIChUeXBlcy5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgICAgICAgdmFsdWUuc29tZSgodjogYW55KSA9PiBUeXBlcy5yYXdUeXBlKHYpLmVuZHNXaXRoKCdFeHByZXNzaW9uJykpKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZSA9IFR5cGVzLmlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgICA/IHZhbHVlLm1hcCgodjogRXhwcmVzc2lvbjxUPikgPT5cbiAgICAgICAgICAgICAgICBUeXBlcy5yYXdUeXBlKHYpLmVuZHNXaXRoKCdFeHByZXNzaW9uJylcbiAgICAgICAgICAgICAgICAgID8gcmF3KHYucmVuZGVyKHsgYWxpYXNlcywgZXNjYXBlLCBwYXJzZXIgfSkpXG4gICAgICAgICAgICAgICAgICA6IHYsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogcmF3KCh2YWx1ZSBhcyBFeHByZXNzaW9uPFQ+KS5yZW5kZXIoeyBhbGlhc2VzLCBlc2NhcGUsIHBhcnNlciB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICAgIH0sIHt9KTtcbiAgICByZXR1cm4gYnVpbGRQYXRoQW5kUXVlcnk8YW55Pih7IC4uLm9wdGlvbnMsIGFsaWFzZXMsIGVzY2FwZSB9KTtcbiAgfVxuXG4gIHRvU3RyaW5nKHtcbiAgICBlc2NhcGUsXG4gICAgcGFyc2VyLFxuICB9OiB7IGVzY2FwZT86IGJvb2xlYW47IHBhcnNlcj86IFBhcnNlcjxUPiB9ID0ge30pOiBzdHJpbmcge1xuICAgIGNvbnN0IFtwYXRoLCBwYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKHsgZXNjYXBlLCBwYXJzZXIgfSk7XG4gICAgcmV0dXJuIChcbiAgICAgIHBhdGggK1xuICAgICAgT2JqZWN0LmVudHJpZXMocGFyYW1zKVxuICAgICAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+ICFUeXBlcy5pc0VtcHR5KHZhbHVlKSlcbiAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YClcbiAgICAgICAgLmpvaW4oJyYnKVxuICAgICk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnZhbHVlcy5rZXlzKCldLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWVzLmdldChrZXkpO1xuICAgICAgdmFsdWUgPSAndG9KU09OJyBpbiB2YWx1ZSA/IHZhbHVlLnRvSlNPTigpIDogdmFsdWU7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tleV06IHZhbHVlIH0pO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHRvUXVlcnlBcmd1bWVudHMoKTogT0RhdGFRdWVyeUFyZ3VtZW50czxUPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLnNlbGVjdCkgfHwgbnVsbCxcbiAgICAgIGV4cGFuZDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLmV4cGFuZCkgfHwgbnVsbCxcbiAgICAgIHRyYW5zZm9ybTogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLnRyYW5zZm9ybSkgfHwgbnVsbCxcbiAgICAgIGNvbXB1dGU6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbi5jb21wdXRlKSB8fCBudWxsLFxuICAgICAgc2VhcmNoOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb24uc2VhcmNoKSB8fCBudWxsLFxuICAgICAgZmlsdGVyOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb24uZmlsdGVyKSB8fCBudWxsLFxuICAgICAgb3JkZXJCeTogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLm9yZGVyQnkpIHx8IG51bGwsXG4gICAgICB0b3A6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbi50b3ApIHx8IG51bGwsXG4gICAgICBza2lwOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb24uc2tpcCkgfHwgbnVsbCxcbiAgICAgIHNraXB0b2tlbjogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLnNraXB0b2tlbikgfHwgbnVsbCxcbiAgICAgIGxldmVsczogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLmxldmVscykgfHwgbnVsbCxcbiAgICAgIGNvdW50OiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb24uY291bnQpIHx8IG51bGwsXG4gICAgfSBhcyBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+O1xuICB9XG5cbiAgY2xvbmU8Tz4oKSB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVF1ZXJ5T3B0aW9uczxPPihPYmplY3RzLmNsb25lKHRoaXMudmFsdWVzKSk7XG4gIH1cblxuICAvLyBTZXQgUmVuZGVyYWJsZVxuICBleHByZXNzaW9uKGtleTogUXVlcnlPcHRpb24sIGV4cD86IEV4cHJlc3Npb248VD4pIHtcbiAgICBpZiAoZXhwICE9PSB1bmRlZmluZWQpIHRoaXMudmFsdWVzLnNldChrZXksIGV4cCk7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmdldChrZXkpO1xuICB9XG5cbiAgLy8gT3B0aW9uIEhhbmRsZXJcbiAgb3B0aW9uPE8+KGtleTogUXVlcnlPcHRpb24sIG9wdHM/OiBPKSB7XG4gICAgaWYgKG9wdHMgIT09IHVuZGVmaW5lZCkgdGhpcy52YWx1ZXMuc2V0KGtleSwgb3B0cyk7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxPPih0aGlzLnZhbHVlcywga2V5KTtcbiAgfVxuXG4gIC8vIFF1ZXJ5IE9wdGlvbnMgdG9vbHNcbiAgaGFzKGtleTogUXVlcnlPcHRpb24pIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuaGFzKGtleSk7XG4gIH1cblxuICByZW1vdmUoLi4ua2V5czogUXVlcnlPcHRpb25bXSkge1xuICAgIFsuLi50aGlzLnZhbHVlcy5rZXlzKCldXG4gICAgICAuZmlsdGVyKChrKSA9PiBrZXlzLmluZGV4T2YoaykgIT09IC0xKVxuICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB0aGlzLnZhbHVlcy5kZWxldGUoa2V5KTtcbiAgICAgIH0pO1xuICB9XG5cbiAga2VlcCguLi5rZXlzOiBRdWVyeU9wdGlvbltdKSB7XG4gICAgWy4uLnRoaXMudmFsdWVzLmtleXMoKV1cbiAgICAgIC5maWx0ZXIoKGspID0+IGtleXMuaW5kZXhPZihrKSA9PT0gLTEpXG4gICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHRoaXMudmFsdWVzLmRlbGV0ZShrZXkpO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBDbGVhclxuICBjbGVhcigpIHtcbiAgICB0aGlzLnZhbHVlcy5jbGVhcigpO1xuICB9XG59XG4iXX0=
|
|
@@ -192,4 +192,4 @@ export class ODataRequest {
|
|
|
192
192
|
return ['PUT', 'PATCH', 'POST', 'DELETE'].indexOf(this._method) !== -1;
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sZUFBZSxFQUNmLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXZDLE1BQU0sT0FBTyxZQUFZO0lBNkJ2QixZQUFZLElBb0NYO1FBQ0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU5QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFNUIsZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUV2QyxXQUFXO1FBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJO1lBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FB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QyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDb250ZXh0LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gICRCQVRDSCxcbiAgJFFVRVJZLFxuICBBQ0NFUFQsXG4gIElGX01BVENIX0hFQURFUixcbiAgSUZfTk9ORV9NQVRDSF9IRUFERVIsXG4gIFBSRUZFUixcbiAgVEVYVF9QTEFJTixcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFF1ZXJ5T3B0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSHR0cCwgVHlwZXMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBPRGF0YVJlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZSc7XG5pbXBvcnQgeyBPRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVxdWVzdDxUPiB7XG4gIHJlYWRvbmx5IGFwaTogT0RhdGFBcGk7XG4gIHJlYWRvbmx5IG9ic2VydmU6ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgcmVhZG9ubHkgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICByZWFkb25seSByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGJvZHlRdWVyeU9wdGlvbnM6IFF1ZXJ5T3B0aW9uW107XG4gIHJlYWRvbmx5IGZldGNoUG9saWN5OlxuICAgIHwgJ2NhY2hlLWZpcnN0J1xuICAgIHwgJ2NhY2hlLWFuZC1uZXR3b3JrJ1xuICAgIHwgJ25ldHdvcmstb25seSdcbiAgICB8ICduby1jYWNoZSdcbiAgICB8ICdjYWNoZS1vbmx5JztcbiAgcmVhZG9ubHkgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlVHlwZT86XG4gICAgfCAnYXJyYXlidWZmZXInXG4gICAgfCAnYmxvYidcbiAgICB8ICdqc29uJ1xuICAgIHwgJ3RleHQnXG4gICAgfCAndmFsdWUnXG4gICAgfCAncHJvcGVydHknXG4gICAgfCAnZW50aXR5J1xuICAgIHwgJ2VudGl0aWVzJztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0aG9kOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JvZHk6IGFueSB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlcnM6IEh0dHBIZWFkZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbXM6IEh0dHBQYXJhbXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhdGg6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihpbml0OiB7XG4gICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgYXBpOiBPRGF0YUFwaTtcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBib2R5OiBhbnk7XG4gICAgb2JzZXJ2ZTogJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICBldGFnPzogc3RyaW5nO1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcGFyYW1zPzpcbiAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgfCB7XG4gICAgICAgICAgW3BhcmFtOiBzdHJpbmddOlxuICAgICAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgICAgIHwgbnVtYmVyXG4gICAgICAgICAgICB8IGJvb2xlYW5cbiAgICAgICAgICAgIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICAgICAgfTtcbiAgICByZXNwb25zZVR5cGU/OlxuICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICB8ICdibG9iJ1xuICAgICAgfCAnanNvbidcbiAgICAgIHwgJ3RleHQnXG4gICAgICB8ICd2YWx1ZSdcbiAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgfCAnZW50aXR5J1xuICAgICAgfCAnZW50aXRpZXMnO1xuICAgIGZldGNoUG9saWN5PzpcbiAgICAgIHwgJ2NhY2hlLWZpcnN0J1xuICAgICAgfCAnY2FjaGUtYW5kLW5ldHdvcmsnXG4gICAgICB8ICduZXR3b3JrLW9ubHknXG4gICAgICB8ICduby1jYWNoZSdcbiAgICAgIHwgJ2NhY2hlLW9ubHknO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uW107XG4gIH0pIHtcbiAgICB0aGlzLl9tZXRob2QgPSBpbml0Lm1ldGhvZDtcbiAgICB0aGlzLnJlc291cmNlID0gaW5pdC5yZXNvdXJjZTtcblxuICAgIHRoaXMuYXBpID0gaW5pdC5hcGk7XG4gICAgdGhpcy5yZXBvcnRQcm9ncmVzcyA9IGluaXQucmVwb3J0UHJvZ3Jlc3M7XG4gICAgdGhpcy5vYnNlcnZlID0gaW5pdC5vYnNlcnZlO1xuICAgIHRoaXMuY29udGV4dCA9IGluaXQuY29udGV4dDtcblxuICAgIC8vIFJlc3BvbnNlIFR5cGVcbiAgICB0aGlzLl9yZXNwb25zZVR5cGUgPSBpbml0LnJlc3BvbnNlVHlwZTtcblxuICAgIC8vIFRoZSBCb2R5XG4gICAgdGhpcy5fYm9keSA9IGluaXQuYm9keSAhPT0gdW5kZWZpbmVkID8gaW5pdC5ib2R5IDogbnVsbDtcbiAgICBpZiAodGhpcy5fYm9keSAhPT0gbnVsbCkgdGhpcy5fYm9keSA9IHRoaXMucmVzb3VyY2Uuc2VyaWFsaXplKHRoaXMuX2JvZHkpO1xuXG4gICAgdGhpcy53aXRoQ3JlZGVudGlhbHMgPVxuICAgICAgaW5pdC53aXRoQ3JlZGVudGlhbHMgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHRoaXMuYXBpLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzXG4gICAgICAgIDogaW5pdC53aXRoQ3JlZGVudGlhbHM7XG4gICAgdGhpcy5mZXRjaFBvbGljeSA9IGluaXQuZmV0Y2hQb2xpY3kgfHwgdGhpcy5hcGkub3B0aW9ucy5mZXRjaFBvbGljeTtcbiAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMgPSBbXG4gICAgICAuLi4odGhpcy5hcGkub3B0aW9ucy5ib2R5UXVlcnlPcHRpb25zIHx8IFtdKSxcbiAgICAgIC4uLihpbml0LmJvZHlRdWVyeU9wdGlvbnMgfHwgW10pLFxuICAgIF07XG5cbiAgICAvLyBUaGUgUGF0aCBhbmQgUGFyYW1zIGZyb20gcmVzb3VyY2VcbiAgICBjb25zdCBbcmVzb3VyY2VQYXRoLCByZXNvdXJjZVBhcmFtc10gPSB0aGlzLnJlc291cmNlLnBhdGhBbmRQYXJhbXMoKTtcbiAgICB0aGlzLl9wYXRoID0gcmVzb3VyY2VQYXRoO1xuXG4gICAgLy8jcmVnaW9uIEhlYWRlcnNcbiAgICBjb25zdCBjdXN0b21IZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9ID0ge307XG4gICAgaWYgKHR5cGVvZiBpbml0LmV0YWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuYXBpLm9wdGlvbnMuZXRhZy5pZk1hdGNoICYmXG4gICAgICAgIFsnUFVUJywgJ1BBVENIJywgJ0RFTEVURSddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICAgIClcbiAgICAgICAgY3VzdG9tSGVhZGVyc1tJRl9NQVRDSF9IRUFERVJdID0gaW5pdC5ldGFnO1xuICAgICAgZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuYXBpLm9wdGlvbnMuZXRhZy5pZk5vbmVNYXRjaCAmJlxuICAgICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICAgIClcbiAgICAgICAgY3VzdG9tSGVhZGVyc1tJRl9OT05FX01BVENIX0hFQURFUl0gPSBpbml0LmV0YWc7XG4gICAgfVxuXG4gICAgY29uc3QgYWNjZXB0ID0gW107XG4gICAgLy8gTWV0YWRhdGFcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/Lm1ldGFkYXRhICE9PSB1bmRlZmluZWQpXG4gICAgICBhY2NlcHQucHVzaChgb2RhdGEubWV0YWRhdGE9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8ubWV0YWRhdGF9YCk7XG4gICAgLy8gSUVFRTc1NFxuICAgIGlmICh0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uaWVlZTc1NENvbXBhdGlibGUgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKFxuICAgICAgICBgSUVFRTc1NENvbXBhdGlibGU9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uaWVlZTc1NENvbXBhdGlibGV9YFxuICAgICAgKTtcbiAgICAvLyBzdHJlYW1pbmdcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LnN0cmVhbWluZyAhPT0gdW5kZWZpbmVkKVxuICAgICAgYWNjZXB0LnB1c2goYHN0cmVhbWluZz0ke3RoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5zdHJlYW1pbmd9YCk7XG4gICAgLy8gRXhwb25lbnRpYWxEZWNpbWFsc1xuICAgIGlmICh0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uZXhwb25lbnRpYWxEZWNpbWFscyAhPT0gdW5kZWZpbmVkKVxuICAgICAgYWNjZXB0LnB1c2goXG4gICAgICAgIGBFeHBvbmVudGlhbERlY2ltYWxzPSR7dGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmV4cG9uZW50aWFsRGVjaW1hbHN9YFxuICAgICAgKTtcbiAgICBpZiAoYWNjZXB0Lmxlbmd0aCA+IDApXG4gICAgICBjdXN0b21IZWFkZXJzW0FDQ0VQVF0gPSBbXG4gICAgICAgIGBhcHBsaWNhdGlvbi9qc29uOyR7YWNjZXB0LmpvaW4oJzsnKX1gLFxuICAgICAgICAndGV4dC9wbGFpbicsXG4gICAgICAgICcqLyonLFxuICAgICAgXTtcblxuICAgIGNvbnN0IHByZWZlciA9IFtdO1xuICAgIC8vIFJldHVyblxuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5yZXR1cm4gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgWydQT1NUJywgJ1BVVCcsICdQQVRDSCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgcmV0dXJuPSR7dGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LnJldHVybn1gKTtcbiAgICAvLyBNYXhQYWdlU2l6ZVxuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5tYXhQYWdlU2l6ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgb2RhdGEubWF4cGFnZXNpemU9JHt0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8ubWF4UGFnZVNpemV9YCk7XG4gICAgLy8gQW5ub3RhdGlvbnNcbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8uaW5jbHVkZUFubm90YXRpb25zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIFsnR0VUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMVxuICAgIClcbiAgICAgIHByZWZlci5wdXNoKFxuICAgICAgICBgb2RhdGEuaW5jbHVkZS1hbm5vdGF0aW9ucz0ke3RoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5pbmNsdWRlQW5ub3RhdGlvbnN9YFxuICAgICAgKTtcbiAgICAvLyBPbWl0IE51bGwgVmFsdWVzXG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/Lm9taXROdWxsVmFsdWVzID09PSB0cnVlICYmXG4gICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgb21pdC12YWx1ZXM9bnVsbHNgKTtcbiAgICAvLyBDb250aW51ZSBvbiBFcnJvclxuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5jb250aW51ZU9uRXJyb3IgPT09IHRydWUgJiZcbiAgICAgIFsnUE9TVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgb2RhdGEuY29udGludWUtb24tZXJyb3JgKTtcbiAgICBpZiAocHJlZmVyLmxlbmd0aCA+IDApIGN1c3RvbUhlYWRlcnNbUFJFRkVSXSA9IHByZWZlcjtcbiAgICB0aGlzLl9oZWFkZXJzID0gSHR0cC5tZXJnZUh0dHBIZWFkZXJzKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5oZWFkZXJzLFxuICAgICAgY3VzdG9tSGVhZGVycyxcbiAgICAgIGluaXQuaGVhZGVycyB8fCB7fVxuICAgICk7XG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gUGFyYW1zXG4gICAgY29uc3QgY3VzdG9tUGFyYW1zOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9ID0ge307XG4gICAgaWYgKFxuICAgICAgWydQT1NUJywgJ1BVVCcsICdQQVRDSCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTEgJiZcbiAgICAgICckc2VsZWN0JyBpbiByZXNvdXJjZVBhcmFtc1xuICAgICkge1xuICAgICAgY3VzdG9tUGFyYW1zWyckc2VsZWN0J10gPSByZXNvdXJjZVBhcmFtc1snJHNlbGVjdCddO1xuICAgIH1cbiAgICBpZiAoWydQT1NUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMSAmJiAnJGV4cGFuZCcgaW4gcmVzb3VyY2VQYXJhbXMpIHtcbiAgICAgIGN1c3RvbVBhcmFtc1snJGV4cGFuZCddID0gcmVzb3VyY2VQYXJhbXNbJyRleHBhbmQnXTtcbiAgICB9XG4gICAgaWYgKFsnR0VUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihjdXN0b21QYXJhbXMsIHJlc291cmNlUGFyYW1zKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXMgPSBIdHRwLm1lcmdlSHR0cFBhcmFtcyhcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucGFyYW1zLFxuICAgICAgY3VzdG9tUGFyYW1zLFxuICAgICAgaW5pdC5wYXJhbXMgfHwge31cbiAgICApO1xuXG4gICAgdGhpcy5fcGFyYW1zID1cbiAgICAgIHRoaXMuX3Jlc3BvbnNlVHlwZSA9PT0gJ2VudGl0eSdcbiAgICAgICAgPyBIdHRwLndpdGhvdXRIdHRwUGFyYW1zKHBhcmFtcywgW1xuICAgICAgICAgICAgJyRmaWx0ZXInLFxuICAgICAgICAgICAgJyRvcmRlcmJ5JyxcbiAgICAgICAgICAgICckY291bnQnLFxuICAgICAgICAgICAgJyRza2lwJyxcbiAgICAgICAgICAgICckdG9wJyxcbiAgICAgICAgICBdKVxuICAgICAgICA6IHBhcmFtcztcbiAgICAvLyNlbmRyZWdpb25cbiAgfVxuXG4gIHN0YXRpYyBmYWN0b3J5KFxuICAgIGFwaTogT0RhdGFBcGksXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICAgIGJvZHlRdWVyeU9wdGlvbnM/OiBRdWVyeU9wdGlvbltdO1xuICAgIH1cbiAgKSB7XG4gICAgY29uc3QgYXBpT3B0aW9ucyA9IGFwaS5vcHRpb25zO1xuICAgIGxldCBwYXJhbXMgPSBvcHRpb25zLnBhcmFtcyB8fCB7fTtcbiAgICBpZiAob3B0aW9ucy53aXRoQ291bnQpIHtcbiAgICAgIHBhcmFtcyA9IEh0dHAubWVyZ2VIdHRwUGFyYW1zKHBhcmFtcywgYXBpT3B0aW9ucy5oZWxwZXIuY291bnRQYXJhbSgpKTtcbiAgICB9XG5cbiAgICBsZXQgZXRhZyA9IG9wdGlvbnMuZXRhZztcbiAgICBpZiAoZXRhZyA9PT0gdW5kZWZpbmVkICYmIFR5cGVzLmlzUGxhaW5PYmplY3Qob3B0aW9ucy5ib2R5KSkge1xuICAgICAgZXRhZyA9IGFwaU9wdGlvbnMuaGVscGVyLmV0YWcob3B0aW9ucy5ib2R5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE9EYXRhUmVxdWVzdCh7XG4gICAgICBtZXRob2QsXG4gICAgICBldGFnLFxuICAgICAgYXBpLFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBwYXJhbXMsXG4gICAgICBjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXG4gICAgICBib2R5OiBvcHRpb25zLmJvZHksXG4gICAgICBvYnNlcnZlOiBvcHRpb25zLm9ic2VydmUsXG4gICAgICBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXG4gICAgICByZXBvcnRQcm9ncmVzczogb3B0aW9ucy5yZXBvcnRQcm9ncmVzcyxcbiAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGUsXG4gICAgICBmZXRjaFBvbGljeTogb3B0aW9ucy5mZXRjaFBvbGljeSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMsXG4gICAgICBib2R5UXVlcnlPcHRpb25zOiBvcHRpb25zLmJvZHlRdWVyeU9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgcmVzcG9uc2VUeXBlKCk6ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCcge1xuICAgIHJldHVybiB0aGlzLl9yZXNwb25zZVR5cGUgJiZcbiAgICAgIFsncHJvcGVydHknLCAnZW50aXR5JywgJ2VudGl0aWVzJ10uaW5kZXhPZih0aGlzLl9yZXNwb25zZVR5cGUpICE9PSAtMVxuICAgICAgPyAnanNvbidcbiAgICAgIDogdGhpcy5fcmVzcG9uc2VUeXBlID09PSAndmFsdWUnXG4gICAgICA/ICd0ZXh0J1xuICAgICAgOiA8J2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0Jz50aGlzLl9yZXNwb25zZVR5cGU7XG4gIH1cblxuICBnZXQgcGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpID8gYCR7dGhpcy5fcGF0aH0vJHskUVVFUll9YCA6IHRoaXMuX3BhdGg7XG4gIH1cblxuICBnZXQgbWV0aG9kKCkge1xuICAgIHJldHVybiB0aGlzLmlzUXVlcnlCb2R5KCkgPyAnUE9TVCcgOiB0aGlzLl9tZXRob2Q7XG4gIH1cblxuICBnZXQgYm9keSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpXG4gICAgICA/IEh0dHAuc3BsaXRIdHRwUGFyYW1zKFxuICAgICAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMubWFwKChuYW1lKSA9PiBgJCR7bmFtZX1gKVxuICAgICAgICApWzFdLnRvU3RyaW5nKClcbiAgICAgIDogdGhpcy5fYm9keTtcbiAgfVxuXG4gIGdldCBwYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNRdWVyeUJvZHkoKVxuICAgICAgPyBIdHRwLnNwbGl0SHR0cFBhcmFtcyhcbiAgICAgICAgICB0aGlzLl9wYXJhbXMsXG4gICAgICAgICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zLm1hcCgobmFtZSkgPT4gYCQke25hbWV9YClcbiAgICAgICAgKVswXVxuICAgICAgOiB0aGlzLl9wYXJhbXM7XG4gIH1cblxuICBnZXQgaGVhZGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpXG4gICAgICA/IEh0dHAubWVyZ2VIdHRwSGVhZGVycyh0aGlzLl9oZWFkZXJzLCB7IENPTlRFTlRfVFlQRTogVEVYVF9QTEFJTiB9KVxuICAgICAgOiB0aGlzLl9oZWFkZXJzO1xuICB9XG5cbiAgZ2V0IHBhdGhXaXRoUGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmFtcy5rZXlzKCkubGVuZ3RoID4gMFxuICAgICAgPyBgJHt0aGlzLnBhdGh9PyR7dGhpcy5wYXJhbXN9YFxuICAgICAgOiB0aGlzLnBhdGg7XG4gIH1cblxuICBnZXQgdXJsKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3RoaXMucGF0aH1gO1xuICB9XG5cbiAgZ2V0IHVybFdpdGhQYXJhbXMoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7dGhpcy5wYXRoV2l0aFBhcmFtc31gO1xuICB9XG5cbiAgZ2V0IGNhY2hlS2V5KCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXMua2V5cygpLmxlbmd0aCA+IDBcbiAgICAgID8gYCR7dGhpcy5fcGF0aH0/JHt0aGlzLl9wYXJhbXN9YFxuICAgICAgOiB0aGlzLl9wYXRoO1xuICB9XG5cbiAgaXNRdWVyeUJvZHkoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX21ldGhvZCA9PT0gJ0dFVCcgJiZcbiAgICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMuc29tZSgobmFtZSkgPT4gdGhpcy5fcGFyYW1zLmhhcyhgJCR7bmFtZX1gKSlcbiAgICApO1xuICB9XG5cbiAgaXNCYXRjaCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoLmVuZHNXaXRoKCRCQVRDSCk7XG4gIH1cblxuICBpc0ZldGNoKCkge1xuICAgIHJldHVybiBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTE7XG4gIH1cblxuICBpc011dGF0ZSgpIHtcbiAgICByZXR1cm4gWydQVVQnLCAnUEFUQ0gnLCAnUE9TVCcsICdERUxFVEUnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xO1xuICB9XG59XG4iXX0=
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sZUFBZSxFQUNmLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXZDLE1BQU0sT0FBTyxZQUFZO0lBNkJ2QixZQUFZLElBb0NYO1FBQ0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU5QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFNUIsZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUV2QyxXQUFXO1FBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJO1lBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FB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QyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDb250ZXh0LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gICRCQVRDSCxcbiAgJFFVRVJZLFxuICBBQ0NFUFQsXG4gIElGX01BVENIX0hFQURFUixcbiAgSUZfTk9ORV9NQVRDSF9IRUFERVIsXG4gIFBSRUZFUixcbiAgVEVYVF9QTEFJTixcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFF1ZXJ5T3B0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSHR0cCwgVHlwZXMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBPRGF0YVJlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZSc7XG5pbXBvcnQgeyBPRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVxdWVzdDxUPiB7XG4gIHJlYWRvbmx5IGFwaTogT0RhdGFBcGk7XG4gIHJlYWRvbmx5IG9ic2VydmU6ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgcmVhZG9ubHkgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICByZWFkb25seSByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGJvZHlRdWVyeU9wdGlvbnM6IFF1ZXJ5T3B0aW9uW107XG4gIHJlYWRvbmx5IGZldGNoUG9saWN5OlxuICAgIHwgJ2NhY2hlLWZpcnN0J1xuICAgIHwgJ2NhY2hlLWFuZC1uZXR3b3JrJ1xuICAgIHwgJ25ldHdvcmstb25seSdcbiAgICB8ICduby1jYWNoZSdcbiAgICB8ICdjYWNoZS1vbmx5JztcbiAgcmVhZG9ubHkgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlVHlwZT86XG4gICAgfCAnYXJyYXlidWZmZXInXG4gICAgfCAnYmxvYidcbiAgICB8ICdqc29uJ1xuICAgIHwgJ3RleHQnXG4gICAgfCAndmFsdWUnXG4gICAgfCAncHJvcGVydHknXG4gICAgfCAnZW50aXR5J1xuICAgIHwgJ2VudGl0aWVzJztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0aG9kOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JvZHk6IGFueSB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlcnM6IEh0dHBIZWFkZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbXM6IEh0dHBQYXJhbXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhdGg6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihpbml0OiB7XG4gICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgYXBpOiBPRGF0YUFwaTtcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBib2R5OiBhbnk7XG4gICAgb2JzZXJ2ZTogJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICBldGFnPzogc3RyaW5nO1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcGFyYW1zPzpcbiAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgfCB7XG4gICAgICAgICAgW3BhcmFtOiBzdHJpbmddOlxuICAgICAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgICAgIHwgbnVtYmVyXG4gICAgICAgICAgICB8IGJvb2xlYW5cbiAgICAgICAgICAgIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICAgICAgfTtcbiAgICByZXNwb25zZVR5cGU/OlxuICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICB8ICdibG9iJ1xuICAgICAgfCAnanNvbidcbiAgICAgIHwgJ3RleHQnXG4gICAgICB8ICd2YWx1ZSdcbiAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgfCAnZW50aXR5J1xuICAgICAgfCAnZW50aXRpZXMnO1xuICAgIGZldGNoUG9saWN5PzpcbiAgICAgIHwgJ2NhY2hlLWZpcnN0J1xuICAgICAgfCAnY2FjaGUtYW5kLW5ldHdvcmsnXG4gICAgICB8ICduZXR3b3JrLW9ubHknXG4gICAgICB8ICduby1jYWNoZSdcbiAgICAgIHwgJ2NhY2hlLW9ubHknO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uW107XG4gIH0pIHtcbiAgICB0aGlzLl9tZXRob2QgPSBpbml0Lm1ldGhvZDtcbiAgICB0aGlzLnJlc291cmNlID0gaW5pdC5yZXNvdXJjZTtcblxuICAgIHRoaXMuYXBpID0gaW5pdC5hcGk7XG4gICAgdGhpcy5yZXBvcnRQcm9ncmVzcyA9IGluaXQucmVwb3J0UHJvZ3Jlc3M7XG4gICAgdGhpcy5vYnNlcnZlID0gaW5pdC5vYnNlcnZlO1xuICAgIHRoaXMuY29udGV4dCA9IGluaXQuY29udGV4dDtcblxuICAgIC8vIFJlc3BvbnNlIFR5cGVcbiAgICB0aGlzLl9yZXNwb25zZVR5cGUgPSBpbml0LnJlc3BvbnNlVHlwZTtcblxuICAgIC8vIFRoZSBCb2R5XG4gICAgdGhpcy5fYm9keSA9IGluaXQuYm9keSAhPT0gdW5kZWZpbmVkID8gaW5pdC5ib2R5IDogbnVsbDtcbiAgICBpZiAodGhpcy5fYm9keSAhPT0gbnVsbCkgdGhpcy5fYm9keSA9IHRoaXMucmVzb3VyY2Uuc2VyaWFsaXplKHRoaXMuX2JvZHkpO1xuXG4gICAgdGhpcy53aXRoQ3JlZGVudGlhbHMgPVxuICAgICAgaW5pdC53aXRoQ3JlZGVudGlhbHMgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHRoaXMuYXBpLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzXG4gICAgICAgIDogaW5pdC53aXRoQ3JlZGVudGlhbHM7XG4gICAgdGhpcy5mZXRjaFBvbGljeSA9IGluaXQuZmV0Y2hQb2xpY3kgfHwgdGhpcy5hcGkub3B0aW9ucy5mZXRjaFBvbGljeTtcbiAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMgPSBbXG4gICAgICAuLi4odGhpcy5hcGkub3B0aW9ucy5ib2R5UXVlcnlPcHRpb25zIHx8IFtdKSxcbiAgICAgIC4uLihpbml0LmJvZHlRdWVyeU9wdGlvbnMgfHwgW10pLFxuICAgIF07XG5cbiAgICAvLyBUaGUgUGF0aCBhbmQgUGFyYW1zIGZyb20gcmVzb3VyY2VcbiAgICBjb25zdCBbcmVzb3VyY2VQYXRoLCByZXNvdXJjZVBhcmFtc10gPSB0aGlzLnJlc291cmNlLnBhdGhBbmRQYXJhbXMoKTtcbiAgICB0aGlzLl9wYXRoID0gcmVzb3VyY2VQYXRoO1xuXG4gICAgLy8jcmVnaW9uIEhlYWRlcnNcbiAgICBjb25zdCBjdXN0b21IZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9ID0ge307XG4gICAgaWYgKHR5cGVvZiBpbml0LmV0YWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuYXBpLm9wdGlvbnMuZXRhZy5pZk1hdGNoICYmXG4gICAgICAgIFsnUFVUJywgJ1BBVENIJywgJ0RFTEVURSddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICAgIClcbiAgICAgICAgY3VzdG9tSGVhZGVyc1tJRl9NQVRDSF9IRUFERVJdID0gaW5pdC5ldGFnO1xuICAgICAgZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuYXBpLm9wdGlvbnMuZXRhZy5pZk5vbmVNYXRjaCAmJlxuICAgICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICAgIClcbiAgICAgICAgY3VzdG9tSGVhZGVyc1tJRl9OT05FX01BVENIX0hFQURFUl0gPSBpbml0LmV0YWc7XG4gICAgfVxuXG4gICAgY29uc3QgYWNjZXB0ID0gW107XG4gICAgLy8gTWV0YWRhdGFcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/Lm1ldGFkYXRhICE9PSB1bmRlZmluZWQpXG4gICAgICBhY2NlcHQucHVzaChgb2RhdGEubWV0YWRhdGE9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8ubWV0YWRhdGF9YCk7XG4gICAgLy8gSUVFRTc1NFxuICAgIGlmICh0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uaWVlZTc1NENvbXBhdGlibGUgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKFxuICAgICAgICBgSUVFRTc1NENvbXBhdGlibGU9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uaWVlZTc1NENvbXBhdGlibGV9YCxcbiAgICAgICk7XG4gICAgLy8gc3RyZWFtaW5nXG4gICAgaWYgKHRoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5zdHJlYW1pbmcgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKGBzdHJlYW1pbmc9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uc3RyZWFtaW5nfWApO1xuICAgIC8vIEV4cG9uZW50aWFsRGVjaW1hbHNcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmV4cG9uZW50aWFsRGVjaW1hbHMgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKFxuICAgICAgICBgRXhwb25lbnRpYWxEZWNpbWFscz0ke3RoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5leHBvbmVudGlhbERlY2ltYWxzfWAsXG4gICAgICApO1xuICAgIGlmIChhY2NlcHQubGVuZ3RoID4gMClcbiAgICAgIGN1c3RvbUhlYWRlcnNbQUNDRVBUXSA9IFtcbiAgICAgICAgYGFwcGxpY2F0aW9uL2pzb247JHthY2NlcHQuam9pbignOycpfWAsXG4gICAgICAgICd0ZXh0L3BsYWluJyxcbiAgICAgICAgJyovKicsXG4gICAgICBdO1xuXG4gICAgY29uc3QgcHJlZmVyID0gW107XG4gICAgLy8gUmV0dXJuXG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LnJldHVybiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBbJ1BPU1QnLCAnUFVUJywgJ1BBVENIJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMVxuICAgIClcbiAgICAgIHByZWZlci5wdXNoKGByZXR1cm49JHt0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8ucmV0dXJufWApO1xuICAgIC8vIE1heFBhZ2VTaXplXG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/Lm1heFBhZ2VTaXplICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIFsnR0VUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMVxuICAgIClcbiAgICAgIHByZWZlci5wdXNoKGBvZGF0YS5tYXhwYWdlc2l6ZT0ke3RoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5tYXhQYWdlU2l6ZX1gKTtcbiAgICAvLyBBbm5vdGF0aW9uc1xuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5pbmNsdWRlQW5ub3RhdGlvbnMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgKVxuICAgICAgcHJlZmVyLnB1c2goXG4gICAgICAgIGBvZGF0YS5pbmNsdWRlLWFubm90YXRpb25zPSR7dGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LmluY2x1ZGVBbm5vdGF0aW9uc31gLFxuICAgICAgKTtcbiAgICAvLyBPbWl0IE51bGwgVmFsdWVzXG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/Lm9taXROdWxsVmFsdWVzID09PSB0cnVlICYmXG4gICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgb21pdC12YWx1ZXM9bnVsbHNgKTtcbiAgICAvLyBDb250aW51ZSBvbiBFcnJvclxuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5jb250aW51ZU9uRXJyb3IgPT09IHRydWUgJiZcbiAgICAgIFsnUE9TVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgb2RhdGEuY29udGludWUtb24tZXJyb3JgKTtcbiAgICBpZiAocHJlZmVyLmxlbmd0aCA+IDApIGN1c3RvbUhlYWRlcnNbUFJFRkVSXSA9IHByZWZlcjtcbiAgICB0aGlzLl9oZWFkZXJzID0gSHR0cC5tZXJnZUh0dHBIZWFkZXJzKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5oZWFkZXJzLFxuICAgICAgY3VzdG9tSGVhZGVycyxcbiAgICAgIGluaXQuaGVhZGVycyB8fCB7fSxcbiAgICApO1xuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIFBhcmFtc1xuICAgIGNvbnN0IGN1c3RvbVBhcmFtczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfSA9IHt9O1xuICAgIGlmIChcbiAgICAgIFsnUE9TVCcsICdQVVQnLCAnUEFUQ0gnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xICYmXG4gICAgICAnJHNlbGVjdCcgaW4gcmVzb3VyY2VQYXJhbXNcbiAgICApIHtcbiAgICAgIGN1c3RvbVBhcmFtc1snJHNlbGVjdCddID0gcmVzb3VyY2VQYXJhbXNbJyRzZWxlY3QnXTtcbiAgICB9XG4gICAgaWYgKFsnUE9TVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTEgJiYgJyRleHBhbmQnIGluIHJlc291cmNlUGFyYW1zKSB7XG4gICAgICBjdXN0b21QYXJhbXNbJyRleHBhbmQnXSA9IHJlc291cmNlUGFyYW1zWyckZXhwYW5kJ107XG4gICAgfVxuICAgIGlmIChbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTEpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oY3VzdG9tUGFyYW1zLCByZXNvdXJjZVBhcmFtcyk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zID0gSHR0cC5tZXJnZUh0dHBQYXJhbXMoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnBhcmFtcyxcbiAgICAgIGN1c3RvbVBhcmFtcyxcbiAgICAgIGluaXQucGFyYW1zIHx8IHt9LFxuICAgICk7XG5cbiAgICB0aGlzLl9wYXJhbXMgPVxuICAgICAgdGhpcy5fcmVzcG9uc2VUeXBlID09PSAnZW50aXR5J1xuICAgICAgICA/IEh0dHAud2l0aG91dEh0dHBQYXJhbXMocGFyYW1zLCBbXG4gICAgICAgICAgICAnJGZpbHRlcicsXG4gICAgICAgICAgICAnJG9yZGVyYnknLFxuICAgICAgICAgICAgJyRjb3VudCcsXG4gICAgICAgICAgICAnJHNraXAnLFxuICAgICAgICAgICAgJyR0b3AnLFxuICAgICAgICAgIF0pXG4gICAgICAgIDogcGFyYW1zO1xuICAgIC8vI2VuZHJlZ2lvblxuICB9XG5cbiAgc3RhdGljIGZhY3RvcnkoXG4gICAgYXBpOiBPRGF0YUFwaSxcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk/OiBhbnk7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uW107XG4gICAgfSxcbiAgKSB7XG4gICAgY29uc3QgYXBpT3B0aW9ucyA9IGFwaS5vcHRpb25zO1xuICAgIGxldCBwYXJhbXMgPSBvcHRpb25zLnBhcmFtcyB8fCB7fTtcbiAgICBpZiAob3B0aW9ucy53aXRoQ291bnQpIHtcbiAgICAgIHBhcmFtcyA9IEh0dHAubWVyZ2VIdHRwUGFyYW1zKHBhcmFtcywgYXBpT3B0aW9ucy5oZWxwZXIuY291bnRQYXJhbSgpKTtcbiAgICB9XG5cbiAgICBsZXQgZXRhZyA9IG9wdGlvbnMuZXRhZztcbiAgICBpZiAoZXRhZyA9PT0gdW5kZWZpbmVkICYmIFR5cGVzLmlzUGxhaW5PYmplY3Qob3B0aW9ucy5ib2R5KSkge1xuICAgICAgZXRhZyA9IGFwaU9wdGlvbnMuaGVscGVyLmV0YWcob3B0aW9ucy5ib2R5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE9EYXRhUmVxdWVzdCh7XG4gICAgICBtZXRob2QsXG4gICAgICBldGFnLFxuICAgICAgYXBpLFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBwYXJhbXMsXG4gICAgICBjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXG4gICAgICBib2R5OiBvcHRpb25zLmJvZHksXG4gICAgICBvYnNlcnZlOiBvcHRpb25zLm9ic2VydmUsXG4gICAgICBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXG4gICAgICByZXBvcnRQcm9ncmVzczogb3B0aW9ucy5yZXBvcnRQcm9ncmVzcyxcbiAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGUsXG4gICAgICBmZXRjaFBvbGljeTogb3B0aW9ucy5mZXRjaFBvbGljeSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMsXG4gICAgICBib2R5UXVlcnlPcHRpb25zOiBvcHRpb25zLmJvZHlRdWVyeU9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgcmVzcG9uc2VUeXBlKCk6ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCcge1xuICAgIHJldHVybiB0aGlzLl9yZXNwb25zZVR5cGUgJiZcbiAgICAgIFsncHJvcGVydHknLCAnZW50aXR5JywgJ2VudGl0aWVzJ10uaW5kZXhPZih0aGlzLl9yZXNwb25zZVR5cGUpICE9PSAtMVxuICAgICAgPyAnanNvbidcbiAgICAgIDogdGhpcy5fcmVzcG9uc2VUeXBlID09PSAndmFsdWUnXG4gICAgICA/ICd0ZXh0J1xuICAgICAgOiA8J2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0Jz50aGlzLl9yZXNwb25zZVR5cGU7XG4gIH1cblxuICBnZXQgcGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpID8gYCR7dGhpcy5fcGF0aH0vJHskUVVFUll9YCA6IHRoaXMuX3BhdGg7XG4gIH1cblxuICBnZXQgbWV0aG9kKCkge1xuICAgIHJldHVybiB0aGlzLmlzUXVlcnlCb2R5KCkgPyAnUE9TVCcgOiB0aGlzLl9tZXRob2Q7XG4gIH1cblxuICBnZXQgYm9keSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpXG4gICAgICA/IEh0dHAuc3BsaXRIdHRwUGFyYW1zKFxuICAgICAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMubWFwKChuYW1lKSA9PiBgJCR7bmFtZX1gKSxcbiAgICAgICAgKVsxXS50b1N0cmluZygpXG4gICAgICA6IHRoaXMuX2JvZHk7XG4gIH1cblxuICBnZXQgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLmlzUXVlcnlCb2R5KClcbiAgICAgID8gSHR0cC5zcGxpdEh0dHBQYXJhbXMoXG4gICAgICAgICAgdGhpcy5fcGFyYW1zLFxuICAgICAgICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucy5tYXAoKG5hbWUpID0+IGAkJHtuYW1lfWApLFxuICAgICAgICApWzBdXG4gICAgICA6IHRoaXMuX3BhcmFtcztcbiAgfVxuXG4gIGdldCBoZWFkZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmlzUXVlcnlCb2R5KClcbiAgICAgID8gSHR0cC5tZXJnZUh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMsIHsgQ09OVEVOVF9UWVBFOiBURVhUX1BMQUlOIH0pXG4gICAgICA6IHRoaXMuX2hlYWRlcnM7XG4gIH1cblxuICBnZXQgcGF0aFdpdGhQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmtleXMoKS5sZW5ndGggPiAwXG4gICAgICA/IGAke3RoaXMucGF0aH0/JHt0aGlzLnBhcmFtc31gXG4gICAgICA6IHRoaXMucGF0aDtcbiAgfVxuXG4gIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7dGhpcy5wYXRofWA7XG4gIH1cblxuICBnZXQgdXJsV2l0aFBhcmFtcygpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5hcGkuc2VydmljZVJvb3RVcmx9JHt0aGlzLnBhdGhXaXRoUGFyYW1zfWA7XG4gIH1cblxuICBnZXQgY2FjaGVLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtcy5rZXlzKCkubGVuZ3RoID4gMFxuICAgICAgPyBgJHt0aGlzLl9wYXRofT8ke3RoaXMuX3BhcmFtc31gXG4gICAgICA6IHRoaXMuX3BhdGg7XG4gIH1cblxuICBpc1F1ZXJ5Qm9keSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fbWV0aG9kID09PSAnR0VUJyAmJlxuICAgICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucy5zb21lKChuYW1lKSA9PiB0aGlzLl9wYXJhbXMuaGFzKGAkJHtuYW1lfWApKVxuICAgICk7XG4gIH1cblxuICBpc0JhdGNoKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGguZW5kc1dpdGgoJEJBVENIKTtcbiAgfVxuXG4gIGlzRmV0Y2goKSB7XG4gICAgcmV0dXJuIFsnR0VUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMTtcbiAgfVxuXG4gIGlzTXV0YXRlKCkge1xuICAgIHJldHVybiBbJ1BVVCcsICdQQVRDSCcsICdQT1NUJywgJ0RFTEVURSddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTE7XG4gIH1cbn1cbiJdfQ==
|