@ethlete/contentful 3.2.1 → 3.3.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/CHANGELOG.md +8 -0
- package/esm2022/lib/components/audio/contentful-audio.component.mjs +25 -8
- package/esm2022/lib/components/file/contentful-file.component.mjs +29 -8
- package/esm2022/lib/components/image/contentful-image.component.mjs +29 -9
- package/esm2022/lib/components/image/contentful-image.component.utils.mjs +11 -5
- package/esm2022/lib/components/rich-text-renderer/rich-text-renderer.component.mjs +1 -1
- package/esm2022/lib/components/video/contentful-video.component.mjs +23 -6
- package/esm2022/lib/gql/asset.fragments.mjs +5 -1
- package/esm2022/lib/types/contentful.types.mjs +1 -1
- package/fesm2022/ethlete-contentful.mjs +126 -46
- package/fesm2022/ethlete-contentful.mjs.map +1 -1
- package/lib/components/audio/contentful-audio.component.d.ts +7 -2
- package/lib/components/file/contentful-file.component.d.ts +9 -2
- package/lib/components/image/contentful-image.component.d.ts +9 -2
- package/lib/components/image/contentful-image.component.utils.d.ts +4 -3
- package/lib/components/rich-text-renderer/rich-text-renderer.component.d.ts +3 -3
- package/lib/components/video/contentful-video.component.d.ts +7 -2
- package/lib/gql/asset.fragments.d.ts +1 -0
- package/lib/types/contentful.types.d.ts +4 -3
- package/package.json +1 -1
|
@@ -750,4 +750,4 @@ function formatHTML(html) {
|
|
|
750
750
|
}
|
|
751
751
|
return result.join('\n');
|
|
752
752
|
}
|
|
753
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGVudGZ1bC9zcmMvbGliL2NvbXBvbmVudHMvcmljaC10ZXh0LXJlbmRlcmVyL3JpY2gtdGV4dC1yZW5kZXJlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFVBQVUsRUFFVixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsTUFBTSxFQUFTLE9BQU8sRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVF6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFckcsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsU0FBUyxFQUFFLENBQUM7SUFDWixVQUFVLEVBQUUsQ0FBQztJQUNi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QUN6QixNQUFNLEVBQUUsQ0FBQztRQUNYLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRTFDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLEVBQUUsQ0FBQztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIGlzRGV2TW9kZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCTE9DS1MsIEJsb2NrLCBJTkxJTkVTLCBJbmxpbmUsIE1hcmssIFRleHQgfSBmcm9tICdAY29udGVudGZ1bC9yaWNoLXRleHQtdHlwZXMnO1xuaW1wb3J0IHsgZ2V0T2JqZWN0UHJvcGVydHksIGlzT2JqZWN0IH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBwYWlyd2lzZSwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENPTlRFTlRGVUxfQ09ORklHIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbnRlbnRmdWwuY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIENvbnRlbnRmdWxBc3NldCxcbiAgQ29udGVudGZ1bENvbGxlY3Rpb24sXG4gIENvbnRlbnRmdWxFbnRyeSxcbiAgQ29udGVudGZ1bEVudHJ5TGlua0l0ZW0sXG4gIFJpY2hUZXh0UmVzcG9uc2UsXG59IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZUNvbnRlbnRmdWxDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb250ZW50ZnVsLWNvbmZpZyc7XG5pbXBvcnQgeyByaWNoVGV4dFJlbmRlcmVyRXJyb3IgfSBmcm9tICcuL3JpY2gtdGV4dC1yZW5kZXJlci5lcnJvcnMnO1xuaW1wb3J0IHsgaXNSaWNoVGV4dFJvb3ROb2RlLCB0cmFuc2xhdGVDb250ZW50ZnVsTm9kZVR5cGVUb0h0bWxUYWcgfSBmcm9tICcuL3JpY2gtdGV4dC1yZW5kZXJlci51dGlsJztcblxuZXhwb3J0IGNvbnN0IFJFTkRFUl9DT01NQU5EX1RZUEUgPSB7XG4gIEhUTUxfT1BFTjogMCxcbiAgSFRNTF9DTE9TRTogMSxcbiAgVEVYVDogMixcbiAgQ09NUE9ORU5UOiAzLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFJFTkRFUl9DT01NQU5EX1BPU0lUSU9OID0ge1xuICBUWVBFOiAwLFxuICBORVNUSU5HX0xFVkVMOiAxLFxuICBET01fUE9TSVRJT046IDIsXG4gIElOREVYOiAzLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEhUTUxfT1BFTl9SRU5ERVJfQ09NTUFORF9QT1NJVElPTiA9IHtcbiAgQVRUUklCVVRFUzogNCxcbiAgVEFHX05BTUU6IDUsXG4gIEVMRU1FTlRfSUQ6IDYsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSFRNTF9DTE9TRV9SRU5ERVJfQ09NTUFORF9QT1NJVElPTiA9IHtcbiAgVEFHX05BTUU6IDQsXG4gIEVMRU1FTlRfSUQ6IDUsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgVEVYVF9SRU5ERVJfQ09NTUFORF9QT1NJVElPTiA9IHtcbiAgVEVYVDogNCxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfUkVOREVSX0NPTU1BTkRfUE9TSVRJT04gPSB7XG4gIEFUVFJJQlVURVM6IDQsXG4gIENPTVBPTkVOVDogNSxcbiAgSU5QVVRTOiA2LFxuICBDT01QT05FTlRfVFlQRTogNyxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgSHRtbE9wZW5SZW5kZXJDb21tYW5kID0gW1xuICB0eXBlOiB0eXBlb2YgUkVOREVSX0NPTU1BTkRfVFlQRS5IVE1MX09QRU4sXG4gIG5lc3RpbmdMZXZlbDogbnVtYmVyLFxuICBkb21Qb3NpdGlvbjogbnVtYmVyLFxuICBpbmRleDogbnVtYmVyLFxuICBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICB0YWdOYW1lOiBzdHJpbmcsXG4gIGVsZW1lbnRJZDogc3RyaW5nLFxuXTtcblxudHlwZSBIdG1sQ2xvc2VSZW5kZXJDb21tYW5kID0gW1xuICB0eXBlOiB0eXBlb2YgUkVOREVSX0NPTU1BTkRfVFlQRS5IVE1MX0NMT1NFLFxuICBuZXN0aW5nTGV2ZWw6IG51bWJlcixcbiAgZG9tUG9zaXRpb246IG51bWJlcixcbiAgaW5kZXg6IG51bWJlcixcbiAgdGFnTmFtZTogc3RyaW5nLFxuICBlbGVtZW50SWQ6IHN0cmluZyxcbl07XG5cbnR5cGUgVGV4dFJlbmRlckNvbW1hbmQgPSBbXG4gIHR5cGU6IHR5cGVvZiBSRU5ERVJfQ09NTUFORF9UWVBFLlRFWFQsXG4gIG5lc3RpbmdMZXZlbDogbnVtYmVyLFxuICBkb21Qb3NpdGlvbjogbnVtYmVyLFxuICBpbmRleDogbnVtYmVyLFxuICB0ZXh0OiBzdHJpbmcsXG5dO1xuXG50eXBlIENvbXBvbmVudFJlbmRlckNvbW1hbmQgPSBbXG4gIHR5cGU6IHR5cGVvZiBSRU5ERVJfQ09NTUFORF9UWVBFLkNPTVBPTkVOVCxcbiAgbmVzdGluZ0xldmVsOiBudW1iZXIsXG4gIGRvbVBvc2l0aW9uOiBudW1iZXIsXG4gIGluZGV4OiBudW1iZXIsXG4gIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPixcbiAgaW5wdXRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgY29tcG9uZW50VHlwZTogc3RyaW5nLFxuXTtcblxudHlwZSBSZW5kZXJDb21tYW5kID0gSHRtbE9wZW5SZW5kZXJDb21tYW5kIHwgSHRtbENsb3NlUmVuZGVyQ29tbWFuZCB8IFRleHRSZW5kZXJDb21tYW5kIHwgQ29tcG9uZW50UmVuZGVyQ29tbWFuZDtcblxuZXhwb3J0IGNvbnN0IFJFTkRFUl9JTlNUUlVDVElPTl9QT1NJVElPTiA9IHtcbiAgVFlQRTogMCxcbiAgQ09NTUFORDogMSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBSRU5ERVJfSU5TVFJVQ1RJT05fVFlQRSA9IHtcbiAgQ1JFQVRFOiAwLFxuICBVUERBVEU6IDEsXG4gIERFTEVURTogMixcbiAgTU9WRTogMyxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVuZGVySW5zdHJ1Y3Rpb25UeXBlVmFsdWUgPSAodHlwZW9mIFJFTkRFUl9JTlNUUlVDVElPTl9UWVBFKVtrZXlvZiB0eXBlb2YgUkVOREVSX0lOU1RSVUNUSU9OX1RZUEVdO1xuXG50eXBlIFJlbmRlckluc3RydWN0aW9uID0gW1JlbmRlckluc3RydWN0aW9uVHlwZVZhbHVlLCBSZW5kZXJDb21tYW5kXTtcblxuY29uc3QgTUFSS19UQUlMV0lORF9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGJvbGQ6ICdmb250LWJvbGQnLFxuICBpdGFsaWM6ICdpdGFsaWMnLFxuICB1bmRlcmxpbmU6ICd1bmRlcmxpbmUnLFxuICBjb2RlOiAnZm9udC1tb25vJyxcbn07XG5cbmV4cG9ydCBjb25zdCBtYXJrc1RvQ2xhc3MgPSAobWFya3M6IE1hcmtbXSkgPT4ge1xuICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgbWFyayBvZiBtYXJrcykge1xuICAgIGxldCBrbGFzcyA9IE1BUktfVEFJTFdJTkRfTUFQW21hcmsudHlwZV07XG5cbiAgICBpZiAoIWtsYXNzKSB7XG4gICAgICBjb25zb2xlLndhcm4oYE5vIGNsYXNzIGZvdW5kIGZvciBtYXJrIHR5cGUhIEZhbGxpbmcgYmFjayB0byBcIiR7bWFyay50eXBlfVwiLmAsIG1hcmspO1xuXG4gICAgICBrbGFzcyA9IG1hcmsudHlwZTtcbiAgICB9XG5cbiAgICBjbGFzc2VzLnB1c2goa2xhc3MpO1xuICB9XG5cbiAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSHRtbE9wZW5SZW5kZXJDb21tYW5kID0gKGNvbW1hbmQ6IFJlbmRlckNvbW1hbmQpOiBjb21tYW5kIGlzIEh0bWxPcGVuUmVuZGVyQ29tbWFuZCA9PiB7XG4gIHJldHVybiBjb21tYW5kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLlRZUEVdID09PSBSRU5ERVJfQ09NTUFORF9UWVBFLkhUTUxfT1BFTjtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0h0bWxDbG9zZVJlbmRlckNvbW1hbmQgPSAoY29tbWFuZDogUmVuZGVyQ29tbWFuZCk6IGNvbW1hbmQgaXMgSHRtbENsb3NlUmVuZGVyQ29tbWFuZCA9PiB7XG4gIHJldHVybiBjb21tYW5kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLlRZUEVdID09PSBSRU5ERVJfQ09NTUFORF9UWVBFLkhUTUxfQ0xPU0U7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUZXh0UmVuZGVyQ29tbWFuZCA9IChjb21tYW5kOiBSZW5kZXJDb21tYW5kKTogY29tbWFuZCBpcyBUZXh0UmVuZGVyQ29tbWFuZCA9PiB7XG4gIHJldHVybiBjb21tYW5kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLlRZUEVdID09PSBSRU5ERVJfQ09NTUFORF9UWVBFLlRFWFQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDb21wb25lbnRSZW5kZXJDb21tYW5kID0gKGNvbW1hbmQ6IFJlbmRlckNvbW1hbmQpOiBjb21tYW5kIGlzIENvbXBvbmVudFJlbmRlckNvbW1hbmQgPT4ge1xuICByZXR1cm4gY29tbWFuZFtSRU5ERVJfQ09NTUFORF9QT1NJVElPTi5UWVBFXSA9PT0gUkVOREVSX0NPTU1BTkRfVFlQRS5DT01QT05FTlQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVuZGVyQ29tbWFuZElkID0gKGNvbW1hbmQ6IFJlbmRlckNvbW1hbmQpID0+IHtcbiAgaWYgKGlzSHRtbE9wZW5SZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgcmV0dXJuIGNvbW1hbmRbSFRNTF9PUEVOX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLkVMRU1FTlRfSURdO1xuICB9IGVsc2UgaWYgKGlzSHRtbENsb3NlUmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgIHJldHVybiBjb21tYW5kW0hUTUxfQ0xPU0VfUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uRUxFTUVOVF9JRF07XG4gIH0gZWxzZSBpZiAoaXNUZXh0UmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgIHJldHVybiBjb21tYW5kW1RFWFRfUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uVEVYVF07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbW1hbmRbQ09NUE9ORU5UX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLkNPTVBPTkVOVF9UWVBFXTtcbiAgfVxufTtcblxuY29uc3QgQ0xBU1NfQVRUUiA9ICdjbGFzcyc7XG5jb25zdCBERUZBVUxUX0NPTVBPTkVOVF9UWVBFUyA9IHtcbiAgSU1BR0U6ICckJCRfZXQtaW1hZ2UnLFxuICBWSURFTzogJyQkJF9ldC12aWRlbycsXG4gIEFVRElPOiAnJCQkX2V0LWF1ZGlvJyxcbiAgRklMRTogJyQkJF9ldC1maWxlJyxcbn07XG5cbnR5cGUgRXhlY3V0ZWRDb21tYW5kQ2FjaGVJdGVtQmFzZSA9IHtcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG59O1xuXG50eXBlIEV4ZWN1dGVkQ29tcG9uZW50Q29tbWFuZENhY2hlSXRlbSA9IHtcbiAgY29tbWFuZDogQ29tcG9uZW50UmVuZGVyQ29tbWFuZDtcbiAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8dW5rbm93bj47XG59ICYgRXhlY3V0ZWRDb21tYW5kQ2FjaGVJdGVtQmFzZTtcblxudHlwZSBFeGVjdXRlZEh0bWxDb21tYW5kQ2FjaGVJdGVtID0ge1xuICBjb21tYW5kOiBIdG1sT3BlblJlbmRlckNvbW1hbmQgfCBIdG1sQ2xvc2VSZW5kZXJDb21tYW5kO1xufSAmIEV4ZWN1dGVkQ29tbWFuZENhY2hlSXRlbUJhc2U7XG5cbnR5cGUgRXhlY3V0ZWRUZXh0Q29tbWFuZENhY2hlSXRlbSA9IHtcbiAgY29tbWFuZDogVGV4dFJlbmRlckNvbW1hbmQ7XG4gIHRleHROb2RlOiB1bmtub3duO1xufSAmIEV4ZWN1dGVkQ29tbWFuZENhY2hlSXRlbUJhc2U7XG5cbnR5cGUgRXhlY3V0ZWRDb21tYW5kQ2FjaGVJdGVtID1cbiAgfCBFeGVjdXRlZENvbXBvbmVudENvbW1hbmRDYWNoZUl0ZW1cbiAgfCBFeGVjdXRlZEh0bWxDb21tYW5kQ2FjaGVJdGVtXG4gIHwgRXhlY3V0ZWRUZXh0Q29tbWFuZENhY2hlSXRlbTtcblxuZXhwb3J0IGNvbnN0IGlzRXhlY3V0ZWRDb21wb25lbnRDb21tYW5kQ2FjaGVJdGVtID0gKFxuICBjYWNoZTogRXhlY3V0ZWRDb21tYW5kQ2FjaGVJdGVtLFxuKTogY2FjaGUgaXMgRXhlY3V0ZWRDb21wb25lbnRDb21tYW5kQ2FjaGVJdGVtID0+IHtcbiAgcmV0dXJuIGlzQ29tcG9uZW50UmVuZGVyQ29tbWFuZChjYWNoZS5jb21tYW5kKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0V4ZWN1dGVkSHRtbE9yVGV4dENvbW1hbmRDYWNoZUl0ZW0gPSAoXG4gIGNhY2hlOiBFeGVjdXRlZENvbW1hbmRDYWNoZUl0ZW0sXG4pOiBjYWNoZSBpcyBFeGVjdXRlZEh0bWxDb21tYW5kQ2FjaGVJdGVtID0+IHtcbiAgcmV0dXJuIGlzSHRtbENsb3NlUmVuZGVyQ29tbWFuZChjYWNoZS5jb21tYW5kKSB8fCBpc0h0bWxPcGVuUmVuZGVyQ29tbWFuZChjYWNoZS5jb21tYW5kKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0V4ZWN1dGVkVGV4dENvbW1hbmRDYWNoZUl0ZW0gPSAoXG4gIGNhY2hlOiBFeGVjdXRlZENvbW1hbmRDYWNoZUl0ZW0sXG4pOiBjYWNoZSBpcyBFeGVjdXRlZFRleHRDb21tYW5kQ2FjaGVJdGVtID0+IHtcbiAgcmV0dXJuIGlzVGV4dFJlbmRlckNvbW1hbmQoY2FjaGUuY29tbWFuZCk7XG59O1xuXG5leHBvcnQgY29uc3QgRVRfQ09OVEVOVEZVTF9BTllfRU5UUllfQ09OVEVOVF9UWVBFX1NZU19JRCA9ICckJCRfZXQtY29udGVudGZ1bC1hbnktZW50cnktY29udGVudC10eXBlLXN5cy1pZCc7XG5cbmV4cG9ydCB0eXBlIENvbnRlbnRmdWxJbmNsdWRlTWFwID0ge1xuICAvKipcbiAgICogU2VsZWN0IGFuIGVudHJ5IGJ5IGl0cyBJRCBhbmQgY29udGVudCB0eXBlIElELlxuICAgKlxuICAgKiBUaGUgY29udGVudCB0eXBlIElEIGNhbiBiZSBmb3VuZCBpbnNpZGUgdGhlIGVudHJ5IC0+IHN5cyAtPiBjb250ZW50VHlwZSAtPiBzeXMgLT4gaWQgcHJvcGVydHkuXG4gICAqXG4gICAqIFlvdSBjYW4gcHJvdmlkZSB0aGUgYEVUX0NPTlRFTlRGVUxfQU5ZX0VOVFJZX0NPTlRFTlRfVFlQRV9TWVNfSURgIGNvbnN0YW50IHRvIG1hdGNoIGFueSBlbnRyeSBzeXMgSUQuXG4gICAqIEJ1dCBiZSBhd2FyZSB0aGF0IHRoaXMgd2lsbCByZXR1cm4gdGhlIGVudHJ5IGFzIGlzIHdpdGhvdXQgYW55IHR5cGUgY2hlY2tpbmcuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBnZXRFbnRyeTogPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihpZDogc3RyaW5nLCBjb250ZW50VHlwZUlkOiBzdHJpbmcpID0+IENvbnRlbnRmdWxFbnRyeTxUPiB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBtdWx0aXBsZSBlbnRyaWVzIGJ5IHRoZWlyIElEcyBhbmQgY29udGVudCB0eXBlIElELlxuICAgKiBJZiBhbiBlbnRyeSBpcyBub3QgZm91bmQsIGl0IHdpbGwgYmUgb21pdHRlZCBmcm9tIHRoZSByZXN1bHQuXG4gICAqXG4gICAqIFRoZSBjb250ZW50IHR5cGUgSUQgY2FuIGJlIGZvdW5kIGluc2lkZSB0aGUgZW50cnkgLT4gc3lzIC0+IGNvbnRlbnRUeXBlIC0+IHN5cyAtPiBpZCBwcm9wZXJ0eS5cbiAgICpcbiAgICogWW91IGNhbiBwcm92aWRlIHRoZSBgRVRfQ09OVEVOVEZVTF9BTllfRU5UUllfQ09OVEVOVF9UWVBFX1NZU19JRGAgY29uc3RhbnQgdG8gbWF0Y2ggYW55IGVudHJ5IHN5cyBJRC5cbiAgICogQnV0IGJlIGF3YXJlIHRoYXQgdGhpcyB3aWxsIHJldHVybiB0aGUgZW50cnkgYXMgaXMgd2l0aG91dCBhbnkgdHlwZSBjaGVja2luZy5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGdldEVudHJpZXM6IDxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgaWRzOiBzdHJpbmdbXSB8IENvbnRlbnRmdWxFbnRyeUxpbmtJdGVtW10sXG4gICAgY29udGVudFR5cGVJZDogc3RyaW5nLFxuICApID0+IENvbnRlbnRmdWxFbnRyeTxUPltdO1xuXG4gIC8qKlxuICAgKiBTZWxlY3QgYW4gYXNzZXQgYnkgaXRzIElELlxuICAgKi9cbiAgZ2V0QXNzZXQ6IChpZDogc3RyaW5nKSA9PiBDb250ZW50ZnVsQXNzZXQgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBTZWxlY3QgbXVsdGlwbGUgYXNzZXRzIGJ5IHRoZWlyIElEcy4gSWYgYW4gYXNzZXQgaXMgbm90IGZvdW5kLCBpdCB3aWxsIGJlIG9taXR0ZWQgZnJvbSB0aGUgcmVzdWx0LlxuICAgKi9cbiAgZ2V0QXNzZXRzOiAoaWRzOiBzdHJpbmdbXSkgPT4gQ29udGVudGZ1bEFzc2V0W107XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdldC1jb250ZW50ZnVsLXJpY2gtdGV4dC1yZW5kZXJlcicsXG4gIHRlbXBsYXRlOiBgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LWNvbnRlbnRmdWwtcmljaC10ZXh0LXJlbmRlcmVyJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudGZ1bFJpY2hUZXh0UmVuZGVyZXJDb21wb25lbnQge1xuICBfdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgX3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgX2RvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgX2NvbmZpZyA9IGluamVjdChDT05URU5URlVMX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyBjcmVhdGVDb250ZW50ZnVsQ29uZmlnKCk7XG5cbiAgLyoqXG4gICAqIEEgY2FjaGUgZm9yIGFsbCBleGVjdXRlZCBjb21tYW5kcyB0aGF0IGFyZSBub3QgZGVsZXRlZC5cbiAgICogVGhpcyBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHJlbmRlcmVkIGVsZW1lbnRzIGFuZCBjb21wb25lbnRzLlxuICAgKiBUaGUga2V5IGlzIHRoZSByZW5kZXIgY29tbWFuZCBlbGVtZW50IElELlxuICAgKi9cbiAgX2V4ZWN1dGVkQ29tbWFuZHNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBFeGVjdXRlZENvbW1hbmRDYWNoZUl0ZW0+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50ZnVsIHJlc3BvbnNlIGdvdHRlbiB2aWEgdGhlaXIgUkVTVCBhcGkuXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cuY29udGVudGZ1bC5jb20vZGV2ZWxvcGVycy9kb2NzL3JlZmVyZW5jZXMvY29udGVudC1kZWxpdmVyeS1hcGkvIy9yZWZlcmVuY2UvZW50cmllcy9lbnRyaWVzLWNvbGxlY3Rpb25cbiAgICovXG4gIGNvbnRlbnQgPSBpbnB1dC5yZXF1aXJlZDxDb250ZW50ZnVsQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHdoZXJlIHRoZSByaWNoIHRleHQgZmllbGQgaXMgaW5zaWRlIHRoZSBjb250ZW50ZnVsIHJlc3BvbnNlLiBEb3QgYW5kIGFycmF5IG5vdGF0aW9uIGlzIGFsbG93ZWQuXG4gICAqIEBkZWZhdWx0IFwiaXRlbXNbMF0uZmllbGRzLmh0bWxcIlxuICAgKi9cbiAgcmljaFRleHRQYXRoID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBhbGwgaW5jbHVkZXMgaW4gdGhlIGNvbnRlbnRmdWwgcmVzcG9uc2UuXG4gICAqIFRoaXMgaXMgdXNlZnVsIGZvciBsb29raW5nIHVwIGFzc2V0cyBhbmQgZW50cmllcyB0aGF0IGFyZSByZWZlcmVuY2VkIGluIHRoZSByaWNoIHRleHQgd2l0aG91dCBoYXZpbmcgdG8gdXNlIGxvb3BzLlxuICAgKi9cbiAgY29udGVudEluY2x1ZGVzTWFwID0gY29tcHV0ZWQ8Q29udGVudGZ1bEluY2x1ZGVNYXA+KCgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50KCk7XG4gICAgY29uc3QgYXNzZXRzID0gY29udGVudD8uaW5jbHVkZXMuQXNzZXQ7XG4gICAgY29uc3QgZW50cmllcyA9IGNvbnRlbnQ/LmluY2x1ZGVzLkVudHJ5O1xuXG4gICAgY29uc3QgYXNzZXRNYXAgPSBuZXcgTWFwKGFzc2V0cz8ubWFwKChhc3NldCkgPT4gW2Fzc2V0LnN5cy5pZCwgYXNzZXRdKSA/PyBbXSk7XG4gICAgY29uc3QgZW50cnlNYXAgPSBuZXcgTWFwKGVudHJpZXM/Lm1hcCgoZW50cnkpID0+IFtlbnRyeS5zeXMuaWQsIGVudHJ5XSkgPz8gW10pO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBnZXRFbnRyeSA9IDxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT4oaWQ6IHN0cmluZywgY29udGVudFR5cGVJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJ5TWFwLmdldChpZCk7XG5cbiAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdFbnRyeSBub3QgZm91bmQhIFdpbGwgcmV0dXJuIG51bGwuIElzIHRoZSBpbmNsdWRlIHF1ZXJ5IHBhcmFtIHRvIGxvdz8nLCB7IGlkLCBlbnRyeU1hcCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29udGVudFR5cGVJZCA9PT0gRVRfQ09OVEVOVEZVTF9BTllfRU5UUllfQ09OVEVOVF9UWVBFX1NZU19JRCkge1xuICAgICAgICByZXR1cm4gZW50cnkgYXMgQ29udGVudGZ1bEVudHJ5PFQ+O1xuICAgICAgfVxuXG4gICAgICBpZiAoZW50cnkuc3lzLmNvbnRlbnRUeXBlLnN5cy5pZCAhPT0gY29udGVudFR5cGVJZCkge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0VudHJ5IHN5cyBJRCBkb2VzIG5vdCBtYXRjaCB0aGUgcHJvdmlkZWQgc3lzIElEISBXaWxsIHJldHVybiBudWxsLicsIHtcbiAgICAgICAgICAgIGVudHJ5LFxuICAgICAgICAgICAgc3lzSWQ6IGNvbnRlbnRUeXBlSWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudHJ5IGFzIENvbnRlbnRmdWxFbnRyeTxUPjtcbiAgICB9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBnZXRFbnRyaWVzID0gPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICAgIGlkczogc3RyaW5nW10gfCBDb250ZW50ZnVsRW50cnlMaW5rSXRlbVtdLFxuICAgICAgY29udGVudFR5cGVJZDogc3RyaW5nLFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgZW50cmllcyA9IGlkc1xuICAgICAgICAubWFwKChpZCkgPT4gKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycgPyBpZCA6IGlkLnN5cy5pZCkpXG4gICAgICAgIC5tYXAoKGlkKSA9PiBnZXRFbnRyeTxUPihpZCwgY29udGVudFR5cGVJZCkpXG4gICAgICAgIC5maWx0ZXIoKGVudHJ5KTogZW50cnkgaXMgQ29udGVudGZ1bEVudHJ5PFQ+ID0+IGVudHJ5ICE9PSBudWxsKTtcblxuICAgICAgcmV0dXJuIGVudHJpZXM7XG4gICAgfTtcblxuICAgIGNvbnN0IGdldEFzc2V0ID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBhc3NldE1hcC5nZXQoaWQpID8/IG51bGw7XG4gICAgfTtcblxuICAgIGNvbnN0IGdldEFzc2V0cyA9IChpZHM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICByZXR1cm4gaWRzLm1hcCgoaWQpID0+IGdldEFzc2V0KGlkKSkuZmlsdGVyKChhc3NldCk6IGFzc2V0IGlzIENvbnRlbnRmdWxBc3NldCA9PiBhc3NldCAhPT0gbnVsbCk7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBnZXRFbnRyeSxcbiAgICAgIGdldEVudHJpZXMsXG4gICAgICBnZXRBc3NldCxcbiAgICAgIGdldEFzc2V0cyxcbiAgICB9O1xuICB9KTtcblxuICAvKipcbiAgICogVGhlIHJpY2ggdGV4dCBkYXRhIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgKi9cbiAgcmljaFRleHREYXRhID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmNvbnRlbnQoKTtcbiAgICBjb25zdCByaWNoVGV4dFBhdGggPSB0aGlzLnJpY2hUZXh0UGF0aCgpO1xuXG4gICAgaWYgKCFjb250ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCByaWNoVGV4dCA9IGdldE9iamVjdFByb3BlcnR5KGNvbnRlbnQgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcmljaFRleHRQYXRoKTtcblxuICAgIGlmICghaXNPYmplY3QocmljaFRleHQpKSB7XG4gICAgICB0aHJvdyByaWNoVGV4dFJlbmRlcmVyRXJyb3IoJ3JpY2hfdGV4dF91bmRlZmluZWQnLCBmYWxzZSwgeyBjb250ZW50LCByaWNoVGV4dFBhdGggfSk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1JpY2hUZXh0Um9vdE5vZGUocmljaFRleHQpKSB7XG4gICAgICB0aHJvdyByaWNoVGV4dFJlbmRlcmVyRXJyb3IoJ3JpY2hfdGV4dF93cm9uZ190eXBlJywgZmFsc2UsIHsgY29udGVudCwgcmljaFRleHRQYXRoIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByaWNoVGV4dCBhcyBSaWNoVGV4dFJlc3BvbnNlO1xuICB9KTtcblxuICByZW5kZXJDb21tYW5kcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByaWNoVGV4dERhdGEgPSB0aGlzLnJpY2hUZXh0RGF0YSgpO1xuXG4gICAgaWYgKCFyaWNoVGV4dERhdGEpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlUmVuZGVyQ29tbWFuZHMocmljaFRleHREYXRhKTtcbiAgfSk7XG5cbiAgcmVuZGVyQ29tbWFuZEhpc3RvcnkgPSB0b1NpZ25hbChcbiAgICB0b09ic2VydmFibGUodGhpcy5yZW5kZXJDb21tYW5kcykucGlwZShzdGFydFdpdGgoW10gYXMgUmVuZGVyQ29tbWFuZFtdKSwgcGFpcndpc2UoKSksXG4gICAgeyBpbml0aWFsVmFsdWU6IFtbXSwgW11dIH0sXG4gICk7XG5cbiAgcHJldmlvdXNSZW5kZXJDb21tYW5kTWFwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IFtwcmV2Q29tbWFuZHNdID0gdGhpcy5yZW5kZXJDb21tYW5kSGlzdG9yeSgpO1xuXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIsIFJlbmRlckNvbW1hbmQ+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgcHJldkNvbW1hbmRzKSB7XG4gICAgICBtYXAuc2V0KGdldFJlbmRlckNvbW1hbmRJZChjb21tYW5kKSwgY29tbWFuZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcbiAgfSk7XG5cbiAgcmVuZGVySW5zdHJ1Y3Rpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbW1hbmRzID0gdGhpcy5yZW5kZXJDb21tYW5kcygpO1xuICAgIGNvbnN0IHByZXZpb3VzUmVuZGVyQ29tbWFuZE1hcCA9IG5ldyBNYXAodGhpcy5wcmV2aW91c1JlbmRlckNvbW1hbmRNYXAoKSk7XG5cbiAgICBjb25zdCBpbnN0cnVjdGlvbnM6IFJlbmRlckluc3RydWN0aW9uW10gPSBbXTtcblxuICAgIC8vIHJlbW92ZSBkZWxldGVkIGNvbXBvbmVudHMgYXMgd2VsbCBhcyBhbGwgb3RoZXIgZWxlbWVudHNcbiAgICBmb3IgKGNvbnN0IFssIGNvbW1hbmRdIG9mIHByZXZpb3VzUmVuZGVyQ29tbWFuZE1hcCkge1xuICAgICAgaWYgKGlzQ29tcG9uZW50UmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgICAgICAvLyBrZWVwIHRoZSBjb21wb25lbnQgYXJvdW5kIGlmIGl0J3Mgc3RpbGwgaW4gdGhlIG5ldyBjb21tYW5kc1xuICAgICAgICBpZiAoY29tbWFuZHMuc29tZSgoYykgPT4gZ2V0UmVuZGVyQ29tbWFuZElkKGMpID09PSBnZXRSZW5kZXJDb21tYW5kSWQoY29tbWFuZCkpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5zdHJ1Y3Rpb25zLnB1c2goW1JFTkRFUl9JTlNUUlVDVElPTl9UWVBFLkRFTEVURSwgY29tbWFuZF0pO1xuXG4gICAgICAvLyByZW1vdmUgZnJvbSBtYXAgdG8gbWFyayBhcyB1c2VkXG4gICAgICBwcmV2aW91c1JlbmRlckNvbW1hbmRNYXAuZGVsZXRlKGdldFJlbmRlckNvbW1hbmRJZChjb21tYW5kKSk7XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgaW5kZXhlcyBvZiB0aGUgY29tbWFuZHMgcmVtYWluaW5nIGluIHRoZSBwcmV2aW91c1JlbmRlckNvbW1hbmRNYXAgaW4gdGhlIG5ldyBjb21tYW5kcyBhcnJheS5cbiAgICBjb25zdCBsYXN0Q29tcG9uZW50SW5kZXhlczogeyBuZXdJbmRleDogbnVtYmVyOyBwcmV2SW5kZXg6IG51bWJlcjsgY29tbWFuZDogUmVuZGVyQ29tbWFuZCB9W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtpZCwgY29tbWFuZF0gb2YgcHJldmlvdXNSZW5kZXJDb21tYW5kTWFwKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGNvbW1hbmRzLmZpbmRJbmRleCgoYykgPT4gZ2V0UmVuZGVyQ29tbWFuZElkKGMpID09PSBpZCk7XG4gICAgICBjb25zdCBuZXdDb21tYW5kID0gY29tbWFuZHNbaW5kZXhdITtcblxuICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbW1hbmQgbm90IGZvdW5kIScpO1xuICAgICAgfVxuXG4gICAgICBsYXN0Q29tcG9uZW50SW5kZXhlcy5wdXNoKHtcbiAgICAgICAgbmV3SW5kZXg6IGluZGV4LFxuICAgICAgICBwcmV2SW5kZXg6IGNvbW1hbmRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uSU5ERVhdLFxuICAgICAgICBjb21tYW5kOiBuZXdDb21tYW5kLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbGFzdENvbXBvbmVudEluZGV4ZXMuc29ydCgoYSwgYikgPT4gYS5uZXdJbmRleCAtIGIubmV3SW5kZXgpO1xuXG4gICAgLy8gY2hlY2sgaWYgdGhlIHByZXZJbmRleCBhcmUgaW4gb3JkZXIgYXNjZW5kaW5nXG4gICAgLy8gZm9yIGluZGV4ZXMgdGhhdCBhcmUgbm90IGluIG9yZGVyLCBjcmVhdGUgYSBtb3ZlIGluc3RydWN0aW9uXG4gICAgLy8gZm9yIGluZGV4ZXMgdGhhdCBhcmUgaW4gb3JkZXIsIGNyZWF0ZSBhbiB1cGRhdGUgaW5zdHJ1Y3Rpb25cbiAgICBsZXQgbW92ZUNoZWNrSW5kZXggPSAwO1xuICAgIHdoaWxlIChtb3ZlQ2hlY2tJbmRleCA8IGxhc3RDb21wb25lbnRJbmRleGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgIGNvbnN0IG1vdmVDdXJyID0gbGFzdENvbXBvbmVudEluZGV4ZXNbbW92ZUNoZWNrSW5kZXhdO1xuICAgICAgY29uc3QgbW92ZU5leHQgPSBsYXN0Q29tcG9uZW50SW5kZXhlc1ttb3ZlQ2hlY2tJbmRleCArIDFdO1xuXG4gICAgICBpZiAoIW1vdmVDdXJyIHx8ICFtb3ZlTmV4dCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKG1vdmVDdXJyLnByZXZJbmRleCA+IG1vdmVOZXh0LnByZXZJbmRleCkge1xuICAgICAgICBsYXN0Q29tcG9uZW50SW5kZXhlcy5zcGxpY2UobW92ZUNoZWNrSW5kZXggKyAxLCAxKTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25zLnB1c2goW1JFTkRFUl9JTlNUUlVDVElPTl9UWVBFLk1PVkUsIG1vdmVOZXh0LmNvbW1hbmRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluc3RydWN0aW9ucy5wdXNoKFtSRU5ERVJfSU5TVFJVQ1RJT05fVFlQRS5VUERBVEUsIG1vdmVOZXh0LmNvbW1hbmRdKTtcbiAgICAgICAgbW92ZUNoZWNrSW5kZXgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgY29tbWFuZHMpIHtcbiAgICAgIGNvbnN0IGlkID0gZ2V0UmVuZGVyQ29tbWFuZElkKGNvbW1hbmQpO1xuXG4gICAgICBpZiAoaXNDb21wb25lbnRSZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzQ29tbWFuZCA9IHByZXZpb3VzUmVuZGVyQ29tbWFuZE1hcC5nZXQoaWQpO1xuXG4gICAgICAgIGlmICghcHJldmlvdXNDb21tYW5kKSB7XG4gICAgICAgICAgLy8gY3JlYXRlXG4gICAgICAgICAgaW5zdHJ1Y3Rpb25zLnB1c2goW1JFTkRFUl9JTlNUUlVDVElPTl9UWVBFLkNSRUFURSwgY29tbWFuZF0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjcmVhdGVcbiAgICAgICAgaW5zdHJ1Y3Rpb25zLnB1c2goW1JFTkRFUl9JTlNUUlVDVElPTl9UWVBFLkNSRUFURSwgY29tbWFuZF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbnN0cnVjdGlvbnM7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLnJlbmRlckluc3RydWN0aW9ucylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgICAgdGFwKChpbnN0cnVjdGlvbnMpID0+IHtcbiAgICAgICAgICB0aGlzLl9leGVjSW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucyk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlUmVuZGVyQ29tbWFuZHMocmljaFRleHREYXRhOiBSaWNoVGV4dFJlc3BvbnNlKSB7XG4gICAgLyoqIExpc3Qgb2YgYWxsIHJlbmRlciBjb21tYW5kcyAqL1xuICAgIGNvbnN0IHJvb3RDb21tYW5kczogUmVuZGVyQ29tbWFuZFtdID0gW107XG5cbiAgICAvKiogQ291bnRlciBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgaHRtbCBlbGVtZW50IElEcy4gKi9cbiAgICBsZXQgZWxlbWVudElkID0gMDtcblxuICAgIC8qKiBDb3VudGVyIGZvciBnZW5lcmF0aW5nIHVuaXF1ZSBjb21wb25lbnQgSURzLiAqL1xuICAgIGNvbnN0IGNvbXBvbmVudElkTWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICAgIC8qKiBUaGUgbmVzdGluZyBsZXZlbCBvZiB0aGUgY3VycmVudCBub2RlLiAqL1xuICAgIGxldCBuZXN0aW5nTGV2ZWwgPSAwO1xuXG4gICAgLyoqIFRoZSBwb3NpdGlvbiAoaW5kZXgpIG9mIHRoZSBjdXJyZW50IG5vZGUgaW5zaWRlIHRoZSBwYXJlbnQgbm9kZS4gKi9cbiAgICBsZXQgZG9tUG9zaXRpb24gPSAwO1xuXG4gICAgbGV0IGNvbW1hbmRJbmRleCA9IDA7XG5cbiAgICBjb25zdCB0cmF2ZXJzZSA9IChub2RlOiBCbG9jayB8IElubGluZSB8IFRleHQsIHBhcmVudDogUmVuZGVyQ29tbWFuZCB8IG51bGwgPSBudWxsKSA9PiB7XG4gICAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUpIHtcbiAgICAgICAgY2FzZSAndGV4dCc6IHtcbiAgICAgICAgICAvLyBSZW5kZXIgbWVkaWFcbiAgICAgICAgICBjb25zdCB0eXBlID0gUkVOREVSX0NPTU1BTkRfVFlQRS5URVhUO1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBub2RlLnZhbHVlO1xuXG4gICAgICAgICAgaWYgKCF0ZXh0KSBicmVhaztcblxuICAgICAgICAgIGNvbnN0IGNvbW1hbmQ6IFRleHRSZW5kZXJDb21tYW5kID0gW3R5cGUsIG5lc3RpbmdMZXZlbCwgZG9tUG9zaXRpb24sIGNvbW1hbmRJbmRleCsrLCB0ZXh0XTtcblxuICAgICAgICAgIHJvb3RDb21tYW5kcy5wdXNoKGNvbW1hbmQpO1xuICAgICAgICAgIGRvbVBvc2l0aW9uKys7XG5cbiAgICAgICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICAgICAgdGhyb3cgcmljaFRleHRSZW5kZXJlckVycm9yKCd0ZXh0X3BhcmVudF9ub3RfZm91bmQnLCBmYWxzZSwgeyBub2RlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWlzSHRtbE9wZW5SZW5kZXJDb21tYW5kKHBhcmVudCkgJiYgIWlzQ29tcG9uZW50UmVuZGVyQ29tbWFuZChwYXJlbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyByaWNoVGV4dFJlbmRlcmVyRXJyb3IoJ3RleHRfcGFyZW50X3dyb25nX3R5cGUnLCBmYWxzZSwgeyBub2RlLCBwYXJlbnQgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlc1Bvc2l0aW9uID1cbiAgICAgICAgICAgIHBhcmVudFtSRU5ERVJfQ09NTUFORF9QT1NJVElPTi5UWVBFXSA9PT0gUkVOREVSX0NPTU1BTkRfVFlQRS5IVE1MX09QRU5cbiAgICAgICAgICAgICAgPyBIVE1MX09QRU5fUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uQVRUUklCVVRFU1xuICAgICAgICAgICAgICA6IENPTVBPTkVOVF9SRU5ERVJfQ09NTUFORF9QT1NJVElPTi5BVFRSSUJVVEVTO1xuXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHBhcmVudFthdHRyaWJ1dGVzUG9zaXRpb25dO1xuXG4gICAgICAgICAgaWYgKG5vZGUubWFya3MubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBtYXJrQ2xhc3NlcyA9IG1hcmtzVG9DbGFzcyhub2RlLm1hcmtzKTtcblxuICAgICAgICAgICAgaWYgKENMQVNTX0FUVFIgaW4gYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzW0NMQVNTX0FUVFJdICs9IGAgJHttYXJrQ2xhc3Nlc31gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlc1tDTEFTU19BVFRSXSA9IG1hcmtDbGFzc2VzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBCTE9DS1MuRU1CRURERURfQVNTRVQ6IHtcbiAgICAgICAgICAvLyBSZW5kZXIgbWVkaWFcbiAgICAgICAgICBjb25zdCB0eXBlID0gUkVOREVSX0NPTU1BTkRfVFlQRS5DT01QT05FTlQ7XG4gICAgICAgICAgY29uc3QgYXNzZXRJZCA9IG5vZGUuZGF0YVsndGFyZ2V0J10/LnN5cz8uaWQ7XG5cbiAgICAgICAgICBpZiAoIWFzc2V0SWQpIHtcbiAgICAgICAgICAgIHRocm93IHJpY2hUZXh0UmVuZGVyZXJFcnJvcignYXNzZXRfaWRfbm90X2ZvdW5kJywgZmFsc2UsIHsgbm9kZSB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBhc3NldCA9IHRoaXMuY29udGVudEluY2x1ZGVzTWFwKCkuZ2V0QXNzZXQoYXNzZXRJZCk7XG5cbiAgICAgICAgICBpZiAoIWFzc2V0KSB7XG4gICAgICAgICAgICB0aHJvdyByaWNoVGV4dFJlbmRlcmVyRXJyb3IoJ2Fzc2V0X25vdF9mb3VuZCcsIGZhbHNlLCB7IGFzc2V0SWQsIG5vZGUgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSBhc3NldC5maWVsZHMuZmlsZS5jb250ZW50VHlwZTtcbiAgICAgICAgICBjb25zdCBhc3NldENvbXBvbmVudHMgPSB0aGlzLl9jb25maWcuY29tcG9uZW50cztcblxuICAgICAgICAgIGNvbnN0IGlzSW1hZ2UgPSBjb250ZW50VHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKTtcbiAgICAgICAgICBjb25zdCBpc1ZpZGVvID0gY29udGVudFR5cGUuc3RhcnRzV2l0aCgndmlkZW8vJyk7XG4gICAgICAgICAgY29uc3QgaXNBdWRpbyA9IGNvbnRlbnRUeXBlLnN0YXJ0c1dpdGgoJ2F1ZGlvLycpO1xuXG4gICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gaXNJbWFnZVxuICAgICAgICAgICAgPyBhc3NldENvbXBvbmVudHMuaW1hZ2VcbiAgICAgICAgICAgIDogaXNWaWRlb1xuICAgICAgICAgICAgICA/IGFzc2V0Q29tcG9uZW50cy52aWRlb1xuICAgICAgICAgICAgICA6IGlzQXVkaW9cbiAgICAgICAgICAgICAgICA/IGFzc2V0Q29tcG9uZW50cy5hdWRpb1xuICAgICAgICAgICAgICAgIDogYXNzZXRDb21wb25lbnRzLmZpbGU7XG5cbiAgICAgICAgICBjb25zdCBjb21wb25lbnRUeXBlID0gaXNJbWFnZVxuICAgICAgICAgICAgPyBERUZBVUxUX0NPTVBPTkVOVF9UWVBFUy5JTUFHRVxuICAgICAgICAgICAgOiBpc1ZpZGVvXG4gICAgICAgICAgICAgID8gREVGQVVMVF9DT01QT05FTlRfVFlQRVMuVklERU9cbiAgICAgICAgICAgICAgOiBpc0F1ZGlvXG4gICAgICAgICAgICAgICAgPyBERUZBVUxUX0NPTVBPTkVOVF9UWVBFUy5BVURJT1xuICAgICAgICAgICAgICAgIDogREVGQVVMVF9DT01QT05FTlRfVFlQRVMuRklMRTtcblxuICAgICAgICAgIGxldCBjb21wb25lbnRJZCA9IGNvbXBvbmVudElkTWFwLmdldChjb21wb25lbnRUeXBlKSA/PyAtMTtcbiAgICAgICAgICBjb25zdCBpZCA9IGNvbXBvbmVudFR5cGUgKyArK2NvbXBvbmVudElkO1xuICAgICAgICAgIGNvbXBvbmVudElkTWFwLnNldChjb21wb25lbnRUeXBlLCBjb21wb25lbnRJZCk7XG5cbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0ge307XG5cbiAgICAgICAgICBjb25zdCBpbnB1dHMgPSB7XG4gICAgICAgICAgICBhc3NldCxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgY29tbWFuZDogQ29tcG9uZW50UmVuZGVyQ29tbWFuZCA9IFtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBuZXN0aW5nTGV2ZWwsXG4gICAgICAgICAgICBkb21Qb3NpdGlvbixcbiAgICAgICAgICAgIGNvbW1hbmRJbmRleCsrLFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgIGlucHV0cyxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgIF07XG5cbiAgICAgICAgICByb290Q29tbWFuZHMucHVzaChjb21tYW5kKTtcblxuICAgICAgICAgIGRvbVBvc2l0aW9uKys7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgQkxPQ0tTLkVNQkVEREVEX0VOVFJZOlxuICAgICAgICBjYXNlIElOTElORVMuRU1CRURERURfRU5UUlk6IHtcbiAgICAgICAgICAvLyBSZW5kZXIgY29tcG9uZW50XG4gICAgICAgICAgY29uc3QgdHlwZSA9IFJFTkRFUl9DT01NQU5EX1RZUEUuQ09NUE9ORU5UO1xuICAgICAgICAgIGNvbnN0IGVudHJ5SWQgPSBub2RlLmRhdGFbJ3RhcmdldCddPy5zeXM/LmlkO1xuXG4gICAgICAgICAgaWYgKCFlbnRyeUlkKSB7XG4gICAgICAgICAgICB0aHJvdyByaWNoVGV4dFJlbmRlcmVyRXJyb3IoJ2VudHJ5X2lkX25vdF9mb3VuZCcsIGZhbHNlLCB7IG5vZGUgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmNvbnRlbnRJbmNsdWRlc01hcCgpLmdldEVudHJ5KGVudHJ5SWQsIEVUX0NPTlRFTlRGVUxfQU5ZX0VOVFJZX0NPTlRFTlRfVFlQRV9TWVNfSUQpO1xuXG4gICAgICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICAgICAgdGhyb3cgcmljaFRleHRSZW5kZXJlckVycm9yKCdlbnRyeV9ub3RfZm91bmQnLCBmYWxzZSwgeyBlbnRyeUlkLCBub2RlIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSBlbnRyeS5zeXMuY29udGVudFR5cGUuc3lzLmlkO1xuXG4gICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5fY29uZmlnLmN1c3RvbUNvbXBvbmVudHNbY29tcG9uZW50VHlwZV07XG5cbiAgICAgICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhyb3cgcmljaFRleHRSZW5kZXJlckVycm9yKCdjdXN0b21fY29tcG9uZW50X25vdF9mb3VuZCcsIGZhbHNlLCB7XG4gICAgICAgICAgICAgIGNvbXBvbmVudFR5cGUsXG4gICAgICAgICAgICAgIGN1c3RvbUNvbXBvbmVudHM6IHRoaXMuX2NvbmZpZy5jdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgICBlbnRyeSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgICAgICBsZXQgY29tcG9uZW50SWQgPSBjb21wb25lbnRJZE1hcC5nZXQoY29tcG9uZW50VHlwZSkgPz8gLTE7XG4gICAgICAgICAgY29uc3QgaWQgPSBjb21wb25lbnRUeXBlICsgKytjb21wb25lbnRJZDtcbiAgICAgICAgICBjb21wb25lbnRJZE1hcC5zZXQoY29tcG9uZW50VHlwZSwgY29tcG9uZW50SWQpO1xuXG4gICAgICAgICAgY29uc3QgaW5wdXRzID0ge1xuICAgICAgICAgICAgZmllbGRzOiBlbnRyeS5maWVsZHMsXG4gICAgICAgICAgICBtZXRhZGF0YTogZW50cnkubWV0YWRhdGEsXG4gICAgICAgICAgICBzeXM6IGVudHJ5LnN5cyxcbiAgICAgICAgICAgIGluY2x1ZGVzOiB0aGlzLmNvbnRlbnRJbmNsdWRlc01hcCgpLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBjb21tYW5kOiBDb21wb25lbnRSZW5kZXJDb21tYW5kID0gW1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIG5lc3RpbmdMZXZlbCxcbiAgICAgICAgICAgIGRvbVBvc2l0aW9uLFxuICAgICAgICAgICAgY29tbWFuZEluZGV4KyssXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgY29tcG9uZW50LFxuICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgXTtcblxuICAgICAgICAgIHJvb3RDb21tYW5kcy5wdXNoKGNvbW1hbmQpO1xuXG4gICAgICAgICAgZG9tUG9zaXRpb24rKztcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGNvbnN0IHR5cGUgPSBSRU5ERVJfQ09NTUFORF9UWVBFLkhUTUxfT1BFTjtcbiAgICAgICAgICBjb25zdCB0YWcgPSB0cmFuc2xhdGVDb250ZW50ZnVsTm9kZVR5cGVUb0h0bWxUYWcobm9kZS5ub2RlVHlwZSk7XG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICAgIGNvbnN0IGlkID0gJ2UnICsgZWxlbWVudElkKys7XG5cbiAgICAgICAgICBjb25zdCBjb21tYW5kOiBIdG1sT3BlblJlbmRlckNvbW1hbmQgPSBbdHlwZSwgbmVzdGluZ0xldmVsLCBkb21Qb3NpdGlvbiwgY29tbWFuZEluZGV4KyssIGF0dHJpYnV0ZXMsIHRhZywgaWRdO1xuXG4gICAgICAgICAgcm9vdENvbW1hbmRzLnB1c2goY29tbWFuZCk7XG5cbiAgICAgICAgICBjb25zdCBkb21Qb3NpdGlvbkF0VGhpc0xldmVsID0gZG9tUG9zaXRpb247XG4gICAgICAgICAgLy8gTm9ybWFsIGh0bWwgZWxlbWVudHMgY2FuIGhhdmUgY2hpbGRyZW5cbiAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY29udGVudCkge1xuICAgICAgICAgICAgZG9tUG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgbmVzdGluZ0xldmVsKys7XG4gICAgICAgICAgICB0cmF2ZXJzZShjaGlsZCwgY29tbWFuZCk7XG4gICAgICAgICAgICBuZXN0aW5nTGV2ZWwtLTtcbiAgICAgICAgICAgIGRvbVBvc2l0aW9uID0gZG9tUG9zaXRpb25BdFRoaXNMZXZlbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBsYXN0Q29tbWFuZCA9IHJvb3RDb21tYW5kc1tyb290Q29tbWFuZHMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICBpZiAobGFzdENvbW1hbmQ/LltSRU5ERVJfQ09NTUFORF9QT1NJVElPTi5UWVBFXSA9PT0gUkVOREVSX0NPTU1BTkRfVFlQRS5IVE1MX09QRU4pIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBsYXN0IGNvbW1hbmQgaXMgYW4gb3BlbiBjb21tYW5kLCB3ZSBjYW4gcmVtb3ZlIGl0IHNpbmNlIGl0J3MgZW1wdHlcbiAgICAgICAgICAgIHJvb3RDb21tYW5kcy5wb3AoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY2xvc2VJZCA9ICdlJyArIGVsZW1lbnRJZCsrO1xuXG4gICAgICAgICAgICBjb25zdCBjbG9zZUNvbW1hbmQ6IEh0bWxDbG9zZVJlbmRlckNvbW1hbmQgPSBbXG4gICAgICAgICAgICAgIFJFTkRFUl9DT01NQU5EX1RZUEUuSFRNTF9DTE9TRSxcbiAgICAgICAgICAgICAgbmVzdGluZ0xldmVsLFxuICAgICAgICAgICAgICBkb21Qb3NpdGlvbixcbiAgICAgICAgICAgICAgY29tbWFuZEluZGV4KyssXG4gICAgICAgICAgICAgIHRhZyxcbiAgICAgICAgICAgICAgY2xvc2VJZCxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICByb290Q29tbWFuZHMucHVzaChjbG9zZUNvbW1hbmQpO1xuXG4gICAgICAgICAgICBkb21Qb3NpdGlvbisrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBJTkxJTkVTLkhZUEVSTElOSykge1xuICAgICAgICAgICAgY29uc3QgdXJpID0gbm9kZS5kYXRhWyd1cmknXTtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXNbJ2hyZWYnXSA9IHVyaTtcblxuICAgICAgICAgICAgY29uc3QgaG9zdCA9IHRoaXMuX2RvY3VtZW50LmxvY2F0aW9uLmhvc3Q7XG4gICAgICAgICAgICBjb25zdCBpc0V4dGVybmFsID0gIXVyaS5pbmNsdWRlcyhob3N0KTtcblxuICAgICAgICAgICAgaWYgKGlzRXh0ZXJuYWwpIHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlc1sndGFyZ2V0J10gPSAnX2JsYW5rJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgcmljaFRleHREYXRhLmNvbnRlbnQpIHtcbiAgICAgIHRyYXZlcnNlKG5vZGUsIG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiByb290Q29tbWFuZHM7XG4gIH1cblxuICBwcml2YXRlIF9leGVjSW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uczogUmVuZGVySW5zdHJ1Y3Rpb25bXSkge1xuICAgIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgaW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBjb25zdCB0eXBlID0gaW5zdHJ1Y3Rpb25bUkVOREVSX0lOU1RSVUNUSU9OX1BPU0lUSU9OLlRZUEVdO1xuICAgICAgY29uc3QgY29tbWFuZCA9IGluc3RydWN0aW9uW1JFTkRFUl9JTlNUUlVDVElPTl9QT1NJVElPTi5DT01NQU5EXTtcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUkVOREVSX0lOU1RSVUNUSU9OX1RZUEUuQ1JFQVRFOlxuICAgICAgICAgIHRoaXMuX3J1bkNyZWF0ZUluc3RydWN0aW9uKGNvbW1hbmQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFJFTkRFUl9JTlNUUlVDVElPTl9UWVBFLlVQREFURTpcbiAgICAgICAgICB0aGlzLl9ydW5VcGRhdGVJbnN0cnVjdGlvbihjb21tYW5kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBSRU5ERVJfSU5TVFJVQ1RJT05fVFlQRS5NT1ZFOlxuICAgICAgICAgIHRoaXMuX3J1bk1vdmVJbnN0cnVjdGlvbihjb21tYW5kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBSRU5ERVJfSU5TVFJVQ1RJT05fVFlQRS5ERUxFVEU6XG4gICAgICAgICAgdGhpcy5fcnVuRGVsZXRlSW5zdHJ1Y3Rpb24oY29tbWFuZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcnVuQ3JlYXRlSW5zdHJ1Y3Rpb24oY29tbWFuZDogUmVuZGVyQ29tbWFuZCkge1xuICAgIGNvbnN0IGlkID0gZ2V0UmVuZGVyQ29tbWFuZElkKGNvbW1hbmQpO1xuICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSB0aGlzLl9maW5kUGFyZW50KGNvbW1hbmQpO1xuICAgIGNvbnN0IG5leHRFbGVtZW50ID0gdGhpcy5fZmluZEZvbGxvd2luZ0VsZW1lbnQoY29tbWFuZCk7XG5cbiAgICBpZiAoaXNDb21wb25lbnRSZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21tYW5kW0NPTVBPTkVOVF9SRU5ERVJfQ09NTUFORF9QT1NJVElPTi5DT01QT05FTlRdKTtcblxuICAgICAgdGhpcy5fdXBkYXRlQ29tcG9uZW50SW5wdXRzKGNvbW1hbmQsIGNvbXBvbmVudFJlZik7XG5cbiAgICAgIGNvbnN0IHJvb3ROb2RlID0gdGhpcy5fZ2V0Q29tcG9uZW50Um9vdE5vZGUoY29tcG9uZW50UmVmKTtcblxuICAgICAgdGhpcy5fcmVuZGVySW5zZXJ0T3JBcHBlbmQocm9vdE5vZGUsIHBhcmVudEVsZW1lbnQsIG5leHRFbGVtZW50KTtcblxuICAgICAgdGhpcy5fZXhlY3V0ZWRDb21tYW5kc0NhY2hlLnNldChpZCwge1xuICAgICAgICBjb21tYW5kLFxuICAgICAgICBjb21wb25lbnRSZWYsXG4gICAgICAgIGVsZW1lbnQ6IHJvb3ROb2RlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChpc1RleHRSZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gY29tbWFuZFtURVhUX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLlRFWFRdO1xuICAgICAgY29uc3QgdGV4dE5vZGUgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVUZXh0KHRleHQpO1xuICAgICAgY29uc3Qgc3BhbiA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKHNwYW4sIHRleHROb2RlKTtcblxuICAgICAgdGhpcy5fcmVuZGVySW5zZXJ0T3JBcHBlbmQoc3BhbiwgcGFyZW50RWxlbWVudCwgbmV4dEVsZW1lbnQpO1xuXG4gICAgICB0aGlzLl9leGVjdXRlZENvbW1hbmRzQ2FjaGUuc2V0KGlkLCB7XG4gICAgICAgIGNvbW1hbmQsXG4gICAgICAgIGVsZW1lbnQ6IHNwYW4sXG4gICAgICAgIHRleHROb2RlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChpc0h0bWxPcGVuUmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgICAgY29uc3QgdGFnID0gY29tbWFuZFtIVE1MX09QRU5fUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uVEFHX05BTUVdO1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGNvbW1hbmRbSFRNTF9PUEVOX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLkFUVFJJQlVURVNdO1xuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQodGFnKTtcblxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXR0cmlidXRlcykpIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZW5kZXJJbnNlcnRPckFwcGVuZChlbGVtZW50LCBwYXJlbnRFbGVtZW50LCBuZXh0RWxlbWVudCk7XG5cbiAgICAgIHRoaXMuX2V4ZWN1dGVkQ29tbWFuZHNDYWNoZS5zZXQoaWQsIHtcbiAgICAgICAgY29tbWFuZCxcbiAgICAgICAgZWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3J1blVwZGF0ZUluc3RydWN0aW9uKGNvbW1hbmQ6IFJlbmRlckNvbW1hbmQpIHtcbiAgICBjb25zdCBpZCA9IGdldFJlbmRlckNvbW1hbmRJZChjb21tYW5kKTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLl9leGVjdXRlZENvbW1hbmRzQ2FjaGUuZ2V0KGlkKTtcblxuICAgIGlmICghY2FjaGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhY2hlZCBjb21tYW5kIG5vdCBmb3VuZCEnKTtcbiAgICB9XG5cbiAgICBpZiAoaXNDb21wb25lbnRSZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICBpZiAoIWlzRXhlY3V0ZWRDb21wb25lbnRDb21tYW5kQ2FjaGVJdGVtKGNhY2hlZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYWNoZWQgY29tbWFuZCBpcyBub3QgYSBjb21wb25lbnQgY29tbWFuZCEnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gY2FjaGVkLmNvbXBvbmVudFJlZjtcblxuICAgICAgaWYgKCFjb21wb25lbnRSZWYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21wb25lbnQgcmVmIG5vdCBmb3VuZCEnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdXBkYXRlQ29tcG9uZW50SW5wdXRzKGNvbW1hbmQsIGNvbXBvbmVudFJlZik7XG4gICAgfVxuXG4gICAgdGhpcy5fZXhlY3V0ZWRDb21tYW5kc0NhY2hlLnNldChpZCwge1xuICAgICAgLi4uY2FjaGVkLFxuICAgICAgY29tbWFuZDogY29tbWFuZCBhcyBhbnksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9ydW5Nb3ZlSW5zdHJ1Y3Rpb24oY29tbWFuZDogUmVuZGVyQ29tbWFuZCkge1xuICAgIGNvbnN0IGlkID0gZ2V0UmVuZGVyQ29tbWFuZElkKGNvbW1hbmQpO1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuX2V4ZWN1dGVkQ29tbWFuZHNDYWNoZS5nZXQoaWQpO1xuXG4gICAgaWYgKCFjYWNoZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2FjaGVkIGNvbW1hbmQgbm90IGZvdW5kIScpO1xuICAgIH1cblxuICAgIGlmIChpc0NvbXBvbmVudFJlbmRlckNvbW1hbmQoY29tbWFuZCkpIHtcbiAgICAgIGlmICghaXNFeGVjdXRlZENvbXBvbmVudENvbW1hbmRDYWNoZUl0ZW0oY2FjaGVkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhY2hlZCBjb21tYW5kIGlzIG5vdCBhIGNvbXBvbmVudCBjb21tYW5kIScpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjYWNoZWQuY29tcG9uZW50UmVmO1xuXG4gICAgICBpZiAoIWNvbXBvbmVudFJlZikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBvbmVudCByZWYgbm90IGZvdW5kIScpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByb290Tm9kZSA9IGNhY2hlZC5lbGVtZW50O1xuICAgICAgY29uc3Qgb2xkUGFyZW50RWxlbWVudCA9IGNhY2hlZC5lbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKG9sZFBhcmVudEVsZW1lbnQsIHJvb3ROb2RlKTtcblxuICAgICAgY29uc3QgbmV3UGFyZW50RWxlbWVudCA9IHRoaXMuX2ZpbmRQYXJlbnQoY29tbWFuZCk7XG4gICAgICBjb25zdCBuZXh0RWxlbWVudCA9IHRoaXMuX2ZpbmRGb2xsb3dpbmdFbGVtZW50KGNvbW1hbmQpO1xuXG4gICAgICB0aGlzLl9yZW5kZXJJbnNlcnRPckFwcGVuZChyb290Tm9kZSwgbmV3UGFyZW50RWxlbWVudCwgbmV4dEVsZW1lbnQpO1xuXG4gICAgICB0aGlzLl91cGRhdGVDb21wb25lbnRJbnB1dHMoY29tbWFuZCwgY29tcG9uZW50UmVmKTtcblxuICAgICAgdGhpcy5fZXhlY3V0ZWRDb21tYW5kc0NhY2hlLnNldChpZCwge1xuICAgICAgICAuLi5jYWNoZWQsXG4gICAgICAgIGNvbW1hbmQ6IGNvbW1hbmQgYXMgYW55LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcnVuRGVsZXRlSW5zdHJ1Y3Rpb24oY29tbWFuZDogUmVuZGVyQ29tbWFuZCkge1xuICAgIGNvbnN0IGlkID0gZ2V0UmVuZGVyQ29tbWFuZElkKGNvbW1hbmQpO1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuX2V4ZWN1dGVkQ29tbWFuZHNDYWNoZS5nZXQoaWQpO1xuXG4gICAgaWYgKCFjYWNoZWQpIHtcbiAgICAgIGlmIChpc0h0bWxDbG9zZVJlbmRlckNvbW1hbmQoY29tbWFuZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhY2hlZCBjb21tYW5kIG5vdCBmb3VuZCEnKTtcbiAgICB9XG5cbiAgICBpZiAoaXNDb21wb25lbnRSZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICBpZiAoIWlzRXhlY3V0ZWRDb21wb25lbnRDb21tYW5kQ2FjaGVJdGVtKGNhY2hlZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYWNoZWQgY29tbWFuZCBpcyBub3QgYSBjb21wb25lbnQgY29tbWFuZCEnKTtcbiAgICAgIH1cblxuICAgICAgY2FjaGVkLmNvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xuICAgIH0gZWxzZSBpZiAoaXNUZXh0UmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQoY2FjaGVkLmVsZW1lbnQ/LnBhcmVudEVsZW1lbnQsIGNhY2hlZC5lbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGlzSHRtbE9wZW5SZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDaGlsZChjYWNoZWQuZWxlbWVudD8ucGFyZW50RWxlbWVudCwgY2FjaGVkLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuX2V4ZWN1dGVkQ29tbWFuZHNDYWNoZS5kZWxldGUoaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29tcG9uZW50Um9vdE5vZGUoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55Pik6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ29tcG9uZW50SW5wdXRzKGNvbW1hbmQ6IENvbXBvbmVudFJlbmRlckNvbW1hbmQsIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4pIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb21tYW5kW0NPTVBPTkVOVF9SRU5ERVJfQ09NTUFORF9QT1NJVElPTi5JTlBVVFNdKSkge1xuICAgICAgaWYgKCFjb21wb25lbnRSZWYuaW5zdGFuY2Vba2V5XSkgY29udGludWU7XG5cbiAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maW5kUGFyZW50KGNvbW1hbmQ6IFJlbmRlckNvbW1hbmQpIHtcbiAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBuZXN0aW5nTGV2ZWwgPSBjb21tYW5kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLk5FU1RJTkdfTEVWRUxdO1xuICAgIGxldCBwYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXN0aW5nTGV2ZWwgPT09IDApIHtcbiAgICAgIHBhcmVudEVsZW1lbnQgPSBob3N0RWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmV2ZXJzZSBzZWFyY2ggYWxsIHJlbmRlciBjb21tYW5kcyBiZWdpbm5pbmcgZnJvbSB0aGUgY3VycmVudCBvbmUgdXNpbmcgYSBmb3IgbG9vcC5cbiAgICAgIC8vIFRoZSBwYXJlbnQgaXMgZm91bmQgd2hlbiB0aGUgY29tbWFuZCdzIG5lc3RpbmcgbGV2ZWwgaXN0IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IG5lc3RpbmcgbGV2ZWwgbWludXMgMS5cbiAgICAgIC8vIElmIHRoZSBwYXJlbnQgaXMgbm90IGZvdW5kLCB0aHJvdyBhbiBlcnJvci5cbiAgICAgIGNvbnN0IGFsbENvbW1hbmRzID0gdGhpcy5yZW5kZXJDb21tYW5kcygpO1xuICAgICAgY29uc3QgY3VycmVudENvbW1hbmRJbmRleCA9IGNvbW1hbmRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uSU5ERVhdO1xuXG4gICAgICBsZXQgcGFyZW50Q29tbWFuZDogUmVuZGVyQ29tbWFuZCB8IG51bGwgPSBudWxsO1xuXG4gICAgICBmb3IgKGxldCBpID0gY3VycmVudENvbW1hbmRJbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGNtZCA9IGFsbENvbW1hbmRzW2ldO1xuXG4gICAgICAgIGlmICghY21kKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21tYW5kIG5vdCBmb3VuZCEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbWRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uTkVTVElOR19MRVZFTF0gPT09IG5lc3RpbmdMZXZlbCAtIDEpIHtcbiAgICAgICAgICBwYXJlbnRDb21tYW5kID0gY21kO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghcGFyZW50Q29tbWFuZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcmVudCBjb21tYW5kIG5vdCBmb3VuZCEnKTtcbiAgICAgIH1cblxuICAgICAgcGFyZW50RWxlbWVudCA9IHRoaXMuX2V4ZWN1dGVkQ29tbWFuZHNDYWNoZS5nZXQoZ2V0UmVuZGVyQ29tbWFuZElkKHBhcmVudENvbW1hbmQpKT8uZWxlbWVudDtcbiAgICB9XG5cbiAgICBpZiAoIXBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGFyZW50IGVsZW1lbnQgbm90IGZvdW5kIScpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnRFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfZmluZEZvbGxvd2luZ0VsZW1lbnQoY29tbWFuZDogUmVuZGVyQ29tbWFuZCkge1xuICAgIGNvbnN0IGNhY2hlQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMuX2V4ZWN1dGVkQ29tbWFuZHNDYWNoZS52YWx1ZXMoKSk7XG4gICAgbGV0IG5leHRFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGRvbVBvc2l0aW9uID0gY29tbWFuZFtSRU5ERVJfQ09NTUFORF9QT1NJVElPTi5ET01fUE9TSVRJT05dO1xuICAgIGNvbnN0IG5lc3RpbmdMZXZlbCA9IGNvbW1hbmRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uTkVTVElOR19MRVZFTF07XG4gICAgY29uc3QgdHlwZSA9IGNvbW1hbmRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uVFlQRV07XG5cbiAgICAvLyAgVHJ5IHRvIGZpbmQgYW4gYWxyZWFkeSByZW5kZXJlZCBlbGVtZW50IHdpdGggYSBkb21Qb3NpdGlvbiB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBkb21Qb3NpdGlvbi4gSWYgdGhlcmUgYXJlIG11bHRpcGxlLCB1c2UgdGhlIG9uZSB3aXRoIHRoZSBzbWFsbGVzdCBkb21Qb3NpdGlvbi5cbiAgICAvLyBJZiBpdCBkb2VzIG5vdCBleGlzdCwgdXNlIC5hcHBlbmRDaGlsZCB0byBzaW1wbHkgYXBwZW5kIHRoZSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIHBhcmVudCBlbGVtZW50LlxuICAgIC8vIElmIGl0IGRvZXMgZXhpc3QsIHVzZSAuaW5zZXJ0QmVmb3JlIHRvIGluc2VydCB0aGUgZWxlbWVudCBiZWZvcmUgdGhlIGZvdW5kIGVsZW1lbnQuXG4gICAgZm9yIChjb25zdCBjYWNoZWQgb2YgY2FjaGVBcnJheSkge1xuICAgICAgaWYgKFxuICAgICAgICBjYWNoZWQuY29tbWFuZFtSRU5ERVJfQ09NTUFORF9QT1NJVElPTi5ET01fUE9TSVRJT05dID4gZG9tUG9zaXRpb24gJiZcbiAgICAgICAgY2FjaGVkLmNvbW1hbmRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uTkVTVElOR19MRVZFTF0gPT09IG5lc3RpbmdMZXZlbCAmJlxuICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGVsZW1lbnQgZG9lcyBub3QgZmluZCBpdHNlbGZcbiAgICAgICAgY2FjaGVkLmNvbW1hbmRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uVFlQRV0gIT09IHR5cGVcbiAgICAgICkge1xuICAgICAgICBuZXh0RWxlbWVudCA9IGNhY2hlZC5lbGVtZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dEVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJJbnNlcnRPckFwcGVuZChcbiAgICBub2RlVG9SZW5kZXI6IEhUTUxFbGVtZW50LFxuICAgIHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIG5leHRFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgaWYgKG5leHRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9yZW5kZXJlci5pbnNlcnRCZWZvcmUocGFyZW50RWxlbWVudCwgbm9kZVRvUmVuZGVyLCBuZXh0RWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudEVsZW1lbnQsIG5vZGVUb1JlbmRlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVidWdWaXN1YWxpemVSZW5kZXJDb21tYW5kcyhjb21tYW5kczogUmVuZGVyQ29tbWFuZFtdKSB7XG4gICAgY29uc3QgZGVidWcgPSBjb21tYW5kcy5tYXAoKGNvbW1hbmQpID0+IHRoaXMuX3N0cmluZ2lmeVJlbmRlckNvbW1hbmQoY29tbWFuZCkpLmZsYXQoKTtcblxuICAgIGNvbnN0IHByZXR0aWZpZWQgPSBmb3JtYXRIVE1MKGRlYnVnKTtcblxuICAgIHJldHVybiBwcmV0dGlmaWVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RyaW5naWZ5UmVuZGVyQ29tbWFuZChjb21tYW5kOiBSZW5kZXJDb21tYW5kKSB7XG4gICAgY29uc3QgbmVzdEF0dHIgPSBgbmVzdD1cIiR7Y29tbWFuZFtSRU5ERVJfQ09NTUFORF9QT1NJVElPTi5ORVNUSU5HX0xFVkVMXX1cImA7XG4gICAgY29uc3QgZG9tQXR0ciA9IGBkb209XCIke2NvbW1hbmRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uRE9NX1BPU0lUSU9OXX1cImA7XG5cbiAgICBpZiAoaXNIdG1sT3BlblJlbmRlckNvbW1hbmQoY29tbWFuZCkpIHtcbiAgICAgIHJldHVybiBgPCR7Y29tbWFuZFtIVE1MX09QRU5fUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uVEFHX05BTUVdfSAke25lc3RBdHRyfSAke2RvbUF0dHJ9PmA7XG4gICAgfSBlbHNlIGlmIChpc0h0bWxDbG9zZVJlbmRlckNvbW1hbmQoY29tbWFuZCkpIHtcbiAgICAgIHJldHVybiBgPC8ke2NvbW1hbmRbSFRNTF9DTE9TRV9SRU5ERVJfQ09NTUFORF9QT1NJVElPTi5UQUdfTkFNRV19ICR7bmVzdEF0dHJ9ICR7ZG9tQXR0cn0+YDtcbiAgICB9IGVsc2UgaWYgKGlzVGV4dFJlbmRlckNvbW1hbmQoY29tbWFuZCkpIHtcbiAgICAgIHJldHVybiBbYDxzcGFuICR7bmVzdEF0dHJ9ICR7ZG9tQXR0cn0+YCwgY29tbWFuZFtURVhUX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLlRFWFRdLCAnPC9zcGFuPiddO1xuICAgIH0gZWxzZSBpZiAoaXNDb21wb25lbnRSZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICBjb25zdCBzZWxlY3RvciA9IGNvbW1hbmRbQ09NUE9ORU5UX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLkNPTVBPTkVOVF9UWVBFXTtcbiAgICAgIHJldHVybiBbYDwke3NlbGVjdG9yfSAke25lc3RBdHRyfSAke2RvbUF0dHJ9PmAsIGA8LyR7c2VsZWN0b3J9PmBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ1VOS05PV04nO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3N0cmluZ2lmeVJlbmRlckluc3RydWN0aW9uKGluc3RydWN0aW9uOiBSZW5kZXJJbnN0cnVjdGlvbikge1xuICAgIGNvbnN0IHR5cGUgPSBpbnN0cnVjdGlvbltSRU5ERVJfSU5TVFJVQ1RJT05fUE9TSVRJT04uVFlQRV07XG4gICAgY29uc3QgdHJhbnNsYXRlZFR5cGUgPSBPYmplY3QuZW50cmllcyhSRU5ERVJfSU5TVFJVQ1RJT05fVFlQRSkuZmluZCgoWywgdmFsdWVdKSA9PiB2YWx1ZSA9PT0gdHlwZSk/LlswXTtcblxuICAgIGNvbnN0IGNvbW1hbmQgPSB0aGlzLl9zdHJpbmdpZnlSZW5kZXJDb21tYW5kKGluc3RydWN0aW9uW1JFTkRFUl9JTlNUUlVDVElPTl9QT1NJVElPTi5DT01NQU5EXSk7XG5cbiAgICByZXR1cm4gYCR7dHJhbnNsYXRlZFR5cGV9OiAke2NvbW1hbmR9YDtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRIVE1MKGh0bWw6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGluZGVudCA9IDA7XG5cbiAgZm9yIChjb25zdCB0YWcgb2YgaHRtbCkge1xuICAgIGlmICh0YWcuc3RhcnRzV2l0aCgnPC8nKSkge1xuICAgICAgaW5kZW50LS07XG4gICAgfVxuXG4gICAgcmVzdWx0LnB1c2goJyAnLnJlcGVhdChpbmRlbnQgKiAyKSArIHRhZyk7XG5cbiAgICBpZiAodGFnLnN0YXJ0c1dpdGgoJzwnKSAmJiAhdGFnLnN0YXJ0c1dpdGgoJzwvJykpIHtcbiAgICAgIGluZGVudCsrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQuam9pbignXFxuJyk7XG59XG4iXX0=
|
|
753
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGVudGZ1bC9zcmMvbGliL2NvbXBvbmVudHMvcmljaC10ZXh0LXJlbmRlcmVyL3JpY2gtdGV4dC1yZW5kZXJlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFVBQVUsRUFFVixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsTUFBTSxFQUFTLE9BQU8sRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVF6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFckcsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsU0FBUyxFQUFFLENBQUM7SUFDWixVQUFVLEVBQUUsQ0FBQztJQUNiLElBQUksRUFBRSxDQUFDO0lBQ1AsU0FBUyxFQUFFLENBQUM7Q0FDSixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUc7SUFDckMsSUFBSSxFQUFFLENBQUM7SUFDUCxhQUFhLEVBQUUsQ0FBQztJQUNoQixZQUFZLEVBQUUsQ0FBQztJQUNmLEtBQUssRUFBRSxDQUFDO0NBQ0EsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHO0lBQy9DLFVBQVUsRUFBRSxDQUFDO0lBQ2IsUUFBUSxFQUFFLENBQUM7SUFDWCxVQUFVLEVBQUUsQ0FBQztDQUNMLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRztJQUNoRCxRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxDQUFDO0NBQ0wsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHO0lBQzFDLElBQUksRUFBRSxDQUFDO0NBQ0MsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHO0lBQy9DLFVBQVUsRUFBRSxDQUFDO0lBQ2IsU0FBUyxFQUFFLENBQUM7SUFDWixNQUFNLEVBQUUsQ0FBQztJQUNULGNBQWMsRUFBRSxDQUFDO0NBQ1QsQ0FBQztBQTBDWCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRztJQUN6QyxJQUFJLEVBQUUsQ0FBQztJQUNQLE9BQU8sRUFBRSxDQUFDO0NBQ0YsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLE1BQU0sRUFBRSxDQUFDO0lBQ1QsTUFBTSxFQUFFLENBQUM7SUFDVCxNQUFNLEVBQUUsQ0FBQztJQUNULElBQUksRUFBRSxDQUFDO0NBQ0MsQ0FBQztBQU1YLE1BQU0saUJBQWlCLEdBQTJCO0lBQ2hELElBQUksRUFBRSxXQUFXO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLElBQUksRUFBRSxXQUFXO0NBQ2xCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUM1QyxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7SUFFN0IsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxrREFBa0QsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXBGLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxPQUFzQixFQUFvQyxFQUFFO0lBQ2xHLE9BQU8sT0FBTyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxLQUFLLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztBQUNqRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE9BQXNCLEVBQXFDLEVBQUU7SUFDcEcsT0FBTyxPQUFPLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssbUJBQW1CLENBQUMsVUFBVSxDQUFDO0FBQ2xGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FBc0IsRUFBZ0MsRUFBRTtJQUMxRixPQUFPLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7QUFDNUUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxPQUFzQixFQUFxQyxFQUFFO0lBQ3BHLE9BQU8sT0FBTyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxLQUFLLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztBQUNqRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE9BQXNCLEVBQUUsRUFBRTtJQUMzRCxJQUFJLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDckMsT0FBTyxPQUFPLENBQUMsaUNBQWlDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0QsQ0FBQztTQUFNLElBQUksd0JBQXdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM3QyxPQUFPLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRSxDQUFDO1NBQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sT0FBTyxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxPQUFPLENBQUMsaUNBQWlDLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbkUsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUMzQixNQUFNLHVCQUF1QixHQUFHO0lBQzlCLEtBQUssRUFBRSxjQUFjO0lBQ3JCLEtBQUssRUFBRSxjQUFjO0lBQ3JCLEtBQUssRUFBRSxjQUFjO0lBQ3JCLElBQUksRUFBRSxhQUFhO0NBQ3BCLENBQUM7QUF5QkYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsQ0FDakQsS0FBK0IsRUFDYSxFQUFFO0lBQzlDLE9BQU8sd0JBQXdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLENBQ2xELEtBQStCLEVBQ1EsRUFBRTtJQUN6QyxPQUFPLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FDNUMsS0FBK0IsRUFDUSxFQUFFO0lBQ3pDLE9BQU8sbUJBQW1CLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJDQUEyQyxHQUFHLGlEQUFpRCxDQUFDO0FBa0Q3RyxNQUFNLE9BQU8sbUNBQW1DO0lBb085QztRQW5PQSxzQkFBaUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM3QyxjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLGdCQUFXLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUMxRCxjQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLFlBQU8sR0FBRyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBRXBGOzs7O1dBSUc7UUFDSCwyQkFBc0IsR0FBRyxJQUFJLEdBQUcsRUFBb0MsQ0FBQztRQUVyRTs7O1dBR0c7UUFDSCxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBMkMsQ0FBQztRQUVwRTs7O1dBR0c7UUFDSCxpQkFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUV4Qzs7O1dBR0c7UUFDSCx1QkFBa0IsR0FBRyxRQUFRLENBQXVCLEdBQUcsRUFBRTtZQUN2RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFFeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUUvRSw4REFBOEQ7WUFDOUQsTUFBTSxRQUFRLEdBQUcsQ0FBbUMsRUFBVSxFQUFFLGFBQXFCLEVBQUUsRUFBRTtnQkFDdkYsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFL0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQzt3QkFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyx1RUFBdUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUMxRyxDQUFDO29CQUVELE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBRUQsSUFBSSxhQUFhLEtBQUssMkNBQTJDLEVBQUUsQ0FBQztvQkFDbEUsT0FBTyxLQUEyQixDQUFDO2dCQUNyQyxDQUFDO2dCQUVELElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxhQUFhLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO3dCQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxFQUFFOzRCQUNqRixLQUFLOzRCQUNMLEtBQUssRUFBRSxhQUFhO3lCQUNyQixDQUFDLENBQUM7b0JBQ0wsQ0FBQztvQkFFRCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUVELE9BQU8sS0FBMkIsQ0FBQztZQUNyQyxDQUFDLENBQUM7WUFFRiw4REFBOEQ7WUFDOUQsTUFBTSxVQUFVLEdBQUcsQ0FDakIsR0FBeUMsRUFDekMsYUFBcUIsRUFDckIsRUFBRTtnQkFDRixNQUFNLE9BQU8sR0FBRyxHQUFHO3FCQUNoQixHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ3RELEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFJLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQztxQkFDM0MsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUErQixFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO2dCQUVsRSxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDLENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFO2dCQUM5QixPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ2xDLENBQUMsQ0FBQztZQUVGLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBYSxFQUFFLEVBQUU7Z0JBQ2xDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFnQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3ZHLENBQUMsQ0FBQztZQUVGLE9BQU87Z0JBQ0wsUUFBUTtnQkFDUixVQUFVO2dCQUNWLFFBQVE7Z0JBQ1IsU0FBUzthQUNWLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ0gsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFekMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLE9BQTZDLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFaEcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLHFCQUFxQixDQUFDLHFCQUFxQixFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7WUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxxQkFBcUIsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUN4RixDQUFDO1lBRUQsT0FBTyxRQUE0QixDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUV6QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBRUgseUJBQW9CLEdBQUcsUUFBUSxDQUM3QixZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBcUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQ3BGLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQzNCLENBQUM7UUFFRiw2QkFBd0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUVuRCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztZQUV0RCxLQUFLLE1BQU0sT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNuQyxHQUFHLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hELENBQUM7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO1FBRUgsdUJBQWtCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1lBRTFFLE1BQU0sWUFBWSxHQUF3QixFQUFFLENBQUM7WUFFN0MsMERBQTBEO1lBQzFELEtBQUssTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksd0JBQXdCLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUN0Qyw4REFBOEQ7b0JBQzlELElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNoRixTQUFTO29CQUNYLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBRTdELGtDQUFrQztnQkFDbEMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDL0QsQ0FBQztZQUVELHdHQUF3RztZQUN4RyxNQUFNLG9CQUFvQixHQUFzRSxFQUFFLENBQUM7WUFDbkcsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLHdCQUF3QixFQUFFLENBQUM7Z0JBQ3JELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFFLENBQUM7Z0JBRXBDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDeEMsQ0FBQztnQkFFRCxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7b0JBQ3hCLFFBQVEsRUFBRSxLQUFLO29CQUNmLFNBQVMsRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDO29CQUNqRCxPQUFPLEVBQUUsVUFBVTtpQkFDcEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTdELGdEQUFnRDtZQUNoRCwrREFBK0Q7WUFDL0QsOERBQThEO1lBQzlELElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztZQUN2QixPQUFPLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRTFELElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDM0IsTUFBTTtnQkFDUixDQUFDO2dCQUVELElBQUksUUFBUSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQzVDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNuRCxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDdEUsY0FBYyxFQUFFLENBQUM7Z0JBQ25CLENBQUM7WUFDSCxDQUFDO1lBRUQsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRXZDLElBQUksd0JBQXdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxlQUFlLEdBQUcsd0JBQXdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUV6RCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7d0JBQ3JCLFNBQVM7d0JBQ1QsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO29CQUMvRCxDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixTQUFTO29CQUNULFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDL0QsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUdELFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7YUFDbEMsSUFBSSxDQUNILGtCQUFrQixFQUFFLEVBQ3BCLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxZQUE4QjtRQUMxRCxrQ0FBa0M7UUFDbEMsTUFBTSxZQUFZLEdBQW9CLEVBQUUsQ0FBQztRQUV6QyxzREFBc0Q7UUFDdEQsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLG1EQUFtRDtRQUNuRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUVqRCw2Q0FBNkM7UUFDN0MsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLHVFQUF1RTtRQUN2RSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFFcEIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBMkIsRUFBRSxTQUErQixJQUFJLEVBQUUsRUFBRTtZQUNwRixRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUNaLGVBQWU7b0JBQ2YsTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDO29CQUN0QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUV4QixJQUFJLENBQUMsSUFBSTt3QkFBRSxNQUFNO29CQUVqQixNQUFNLE9BQU8sR0FBc0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFFM0YsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDM0IsV0FBVyxFQUFFLENBQUM7b0JBRWQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNaLE1BQU0scUJBQXFCLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDeEUsQ0FBQztvQkFDRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUMxRSxNQUFNLHFCQUFxQixDQUFDLHdCQUF3QixFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUNqRixDQUFDO29CQUVELE1BQU0sa0JBQWtCLEdBQ3RCLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxtQkFBbUIsQ0FBQyxTQUFTO3dCQUNwRSxDQUFDLENBQUMsaUNBQWlDLENBQUMsVUFBVTt3QkFDOUMsQ0FBQyxDQUFDLGlDQUFpQyxDQUFDLFVBQVUsQ0FBQztvQkFFbkQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBRTlDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDdEIsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFFN0MsSUFBSSxVQUFVLElBQUksVUFBVSxFQUFFLENBQUM7NEJBQzdCLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLFdBQVcsRUFBRSxDQUFDO3dCQUM5QyxDQUFDOzZCQUFNLENBQUM7NEJBQ04sVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFdBQVcsQ0FBQzt3QkFDdkMsQ0FBQztvQkFDSCxDQUFDO29CQUVELE1BQU07Z0JBQ1IsQ0FBQztnQkFFRCxLQUFLLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO29CQUMzQixlQUFlO29CQUNmLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztvQkFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO29CQUU3QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ2IsTUFBTSxxQkFBcUIsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUNyRSxDQUFDO29CQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFFMUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNYLE1BQU0scUJBQXFCLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQzNFLENBQUM7b0JBRUQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO29CQUNsRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztvQkFFaEQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDakQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDakQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFFakQsTUFBTSxTQUFTLEdBQUcsT0FBTzt3QkFDdkIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLO3dCQUN2QixDQUFDLENBQUMsT0FBTzs0QkFDUCxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUs7NEJBQ3ZCLENBQUMsQ0FBQyxPQUFPO2dDQUNQLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSztnQ0FDdkIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7b0JBRTdCLE1BQU0sYUFBYSxHQUFHLE9BQU87d0JBQzNCLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLO3dCQUMvQixDQUFDLENBQUMsT0FBTzs0QkFDUCxDQUFDLENBQUMsdUJBQXVCLENBQUMsS0FBSzs0QkFDL0IsQ0FBQyxDQUFDLE9BQU87Z0NBQ1AsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEtBQUs7Z0NBQy9CLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7b0JBRXJDLElBQUksV0FBVyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQzFELE1BQU0sRUFBRSxHQUFHLGFBQWEsR0FBRyxFQUFFLFdBQVcsQ0FBQztvQkFDekMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7b0JBRS9DLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztvQkFFdEIsTUFBTSxNQUFNLEdBQUc7d0JBQ2IsS0FBSztxQkFDTixDQUFDO29CQUVGLE1BQU0sT0FBTyxHQUEyQjt3QkFDdEMsSUFBSTt3QkFDSixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsWUFBWSxFQUFFO3dCQUNkLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxNQUFNO3dCQUNOLEVBQUU7cUJBQ0gsQ0FBQztvQkFFRixZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUUzQixXQUFXLEVBQUUsQ0FBQztvQkFFZCxNQUFNO2dCQUNSLENBQUM7Z0JBRUQsS0FBSyxNQUFNLENBQUMsY0FBYyxDQUFDO2dCQUMzQixLQUFLLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO29CQUM1QixtQkFBbUI7b0JBQ25CLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztvQkFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO29CQUU3QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ2IsTUFBTSxxQkFBcUIsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUNyRSxDQUFDO29CQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsMkNBQTJDLENBQUMsQ0FBQztvQkFFdkcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNYLE1BQU0scUJBQXFCLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQzNFLENBQUM7b0JBRUQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFFbkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFFL0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNmLE1BQU0scUJBQXFCLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxFQUFFOzRCQUMvRCxhQUFhOzRCQUNiLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCOzRCQUMvQyxLQUFLO3lCQUNOLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUVELE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxXQUFXLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDMUQsTUFBTSxFQUFFLEdBQUcsYUFBYSxHQUFHLEVBQUUsV0FBVyxDQUFDO29CQUN6QyxjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFFL0MsTUFBTSxNQUFNLEdBQUc7d0JBQ2IsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO3dCQUNwQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7d0JBQ3hCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRzt3QkFDZCxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFO3FCQUNwQyxDQUFDO29CQUVGLE1BQU0sT0FBTyxHQUEyQjt3QkFDdEMsSUFBSTt3QkFDSixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsWUFBWSxFQUFFO3dCQUNkLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxNQUFNO3dCQUNOLEVBQUU7cUJBQ0gsQ0FBQztvQkFFRixZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUUzQixXQUFXLEVBQUUsQ0FBQztvQkFFZCxNQUFNO2dCQUNSLENBQUM7Z0JBRUQsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDUixNQUFNLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7b0JBQzNDLE1BQU0sR0FBRyxHQUFHLG9DQUFvQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDaEUsTUFBTSxVQUFVLEdBQTJCLEVBQUUsQ0FBQztvQkFDOUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLFNBQVMsRUFBRSxDQUFDO29CQUU3QixNQUFNLE9BQU8sR0FBMEIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUU5RyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUUzQixNQUFNLHNCQUFzQixHQUFHLFdBQVcsQ0FBQztvQkFDM0MseUNBQXlDO29CQUN6QyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDakMsV0FBVyxHQUFHLENBQUMsQ0FBQzt3QkFDaEIsWUFBWSxFQUFFLENBQUM7d0JBQ2YsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDekIsWUFBWSxFQUFFLENBQUM7d0JBQ2YsV0FBVyxHQUFHLHNCQUFzQixDQUFDO29CQUN2QyxDQUFDO29CQUVELE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUUxRCxJQUFJLFdBQVcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxLQUFLLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNsRiw0RUFBNEU7d0JBQzVFLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDckIsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE1BQU0sT0FBTyxHQUFHLEdBQUcsR0FBRyxTQUFTLEVBQUUsQ0FBQzt3QkFFbEMsTUFBTSxZQUFZLEdBQTJCOzRCQUMzQyxtQkFBbUIsQ0FBQyxVQUFVOzRCQUM5QixZQUFZOzRCQUNaLFdBQVc7NEJBQ1gsWUFBWSxFQUFFOzRCQUNkLEdBQUc7NEJBQ0gsT0FBTzt5QkFDUixDQUFDO3dCQUNGLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBRWhDLFdBQVcsRUFBRSxDQUFDO29CQUNoQixDQUFDO29CQUVELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ3hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzdCLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7d0JBRXpCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDMUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUV2QyxJQUFJLFVBQVUsRUFBRSxDQUFDOzRCQUNmLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7d0JBQ2xDLENBQUM7b0JBQ0gsQ0FBQztvQkFFRCxNQUFNO2dCQUNSLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsS0FBSyxNQUFNLElBQUksSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFlBQWlDO1FBQ3pELEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVqRSxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUNiLEtBQUssdUJBQXVCLENBQUMsTUFBTTtvQkFDakMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNSLEtBQUssdUJBQXVCLENBQUMsTUFBTTtvQkFDakMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNSLEtBQUssdUJBQXVCLENBQUMsSUFBSTtvQkFDL0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNsQyxNQUFNO2dCQUNSLEtBQUssdUJBQXVCLENBQUMsTUFBTTtvQkFDakMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNwQyxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsT0FBc0I7UUFDbEQsTUFBTSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEQsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFFbEgsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUVuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFMUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFakUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xDLE9BQU87Z0JBQ1AsWUFBWTtnQkFDWixPQUFPLEVBQUUsUUFBUTthQUNsQixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFM0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFN0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xDLE9BQU87Z0JBQ1AsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsUUFBUTthQUNULENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVsRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25ELENBQUM7WUFFRCxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUVoRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtnQkFDbEMsT0FBTztnQkFDUCxPQUFPO2FBQ1IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxPQUFzQjtRQUNsRCxNQUFNLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFFekMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQ2xDLEdBQUcsTUFBTTtZQUNULE9BQU8sRUFBRSxPQUFjO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUFzQjtRQUNoRCxNQUFNLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFFekMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDaEMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUV0RCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUV2RCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXhELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFcEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUVuRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtnQkFDbEMsR0FBRyxNQUFNO2dCQUNULE9BQU8sRUFBRSxPQUFjO2FBQ3hCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsT0FBc0I7UUFDbEQsTUFBTSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixJQUFJLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFFRCxJQUFJLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUNoRSxDQUFDO1lBRUQsTUFBTSxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxDQUFDO2FBQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RSxDQUFDO2FBQU0sSUFBSSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8scUJBQXFCLENBQUMsWUFBK0I7UUFDM0QsT0FBUSxZQUFZLENBQUMsUUFBaUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFnQixDQUFDO0lBQ3JGLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxPQUErQixFQUFFLFlBQStCO1FBQzdGLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUFFLFNBQVM7WUFFMUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsT0FBc0I7UUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDbkQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLElBQUksYUFBYSxHQUE0QixTQUFTLENBQUM7UUFFdkQsSUFBSSxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsYUFBYSxHQUFHLFdBQVcsQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLHNGQUFzRjtZQUN0RiwwR0FBMEc7WUFDMUcsOENBQThDO1lBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxQyxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVuRSxJQUFJLGFBQWEsR0FBeUIsSUFBSSxDQUFDO1lBRS9DLEtBQUssSUFBSSxDQUFDLEdBQUcsbUJBQW1CLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDbEQsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUUzQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO2dCQUVELElBQUksR0FBRyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxLQUFLLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDcEUsYUFBYSxHQUFHLEdBQUcsQ0FBQztvQkFDcEIsTUFBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFFRCxhQUFhLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUM5RixDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE9BQXNCO1FBQ2xELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEUsSUFBSSxXQUFXLEdBQTRCLFNBQVMsQ0FBQztRQUVyRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEUsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCw4S0FBOEs7UUFDOUssd0dBQXdHO1FBQ3hHLHNGQUFzRjtRQUN0RixLQUFLLE1BQU0sTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLElBQ0UsTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxXQUFXO2dCQUNsRSxNQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxLQUFLLFlBQVk7Z0JBQ3RFLDZDQUE2QztnQkFDN0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQ3JELENBQUM7Z0JBQ0QsV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQzdCLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxxQkFBcUIsQ0FDM0IsWUFBeUIsRUFDekIsYUFBMEIsRUFDMUIsV0FBb0M7UUFFcEMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRU8sNkJBQTZCLENBQUMsUUFBeUI7UUFDN0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFdEYsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJDLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxPQUFzQjtRQUNwRCxNQUFNLFFBQVEsR0FBRyxTQUFTLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO1FBQzVFLE1BQU0sT0FBTyxHQUFHLFFBQVEsT0FBTyxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7UUFFekUsSUFBSSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxPQUFPLENBQUMsaUNBQWlDLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sR0FBRyxDQUFDO1FBQzNGLENBQUM7YUFBTSxJQUFJLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxLQUFLLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxHQUFHLENBQUM7UUFDN0YsQ0FBQzthQUFNLElBQUksbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxPQUFPLENBQUMsU0FBUyxRQUFRLElBQUksT0FBTyxHQUFHLEVBQUUsT0FBTyxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2xHLENBQUM7YUFBTSxJQUFJLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0MsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNFLE9BQU8sQ0FBQyxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksT0FBTyxHQUFHLEVBQUUsS0FBSyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFTywyQkFBMkIsQ0FBQyxXQUE4QjtRQUNoRSxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEcsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRS9GLE9BQU8sR0FBRyxjQUFjLEtBQUssT0FBTyxFQUFFLENBQUM7SUFDekMsQ0FBQzs4R0Exd0JVLG1DQUFtQztrR0FBbkMsbUNBQW1DLCthQVJwQyxFQUFFOzsyRkFRRCxtQ0FBbUM7a0JBVi9DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxrQ0FBa0M7cUJBQzFDO2lCQUNGOztBQTh3QkQsU0FBUyxVQUFVLENBQUMsSUFBYztJQUNoQyxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFDNUIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWYsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLEVBQUUsQ0FBQztRQUNYLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRTFDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLEVBQUUsQ0FBQztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIGlzRGV2TW9kZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCTE9DS1MsIEJsb2NrLCBJTkxJTkVTLCBJbmxpbmUsIE1hcmssIFRleHQgfSBmcm9tICdAY29udGVudGZ1bC9yaWNoLXRleHQtdHlwZXMnO1xuaW1wb3J0IHsgZ2V0T2JqZWN0UHJvcGVydHksIGlzT2JqZWN0IH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBwYWlyd2lzZSwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENPTlRFTlRGVUxfQ09ORklHIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbnRlbnRmdWwuY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIENvbnRlbnRmdWxDb2xsZWN0aW9uLFxuICBDb250ZW50ZnVsRW50cnksXG4gIENvbnRlbnRmdWxFbnRyeUxpbmtJdGVtLFxuICBDb250ZW50ZnVsUmVzdEFzc2V0LFxuICBSaWNoVGV4dFJlc3BvbnNlLFxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZW50ZnVsQ29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29udGVudGZ1bC1jb25maWcnO1xuaW1wb3J0IHsgcmljaFRleHRSZW5kZXJlckVycm9yIH0gZnJvbSAnLi9yaWNoLXRleHQtcmVuZGVyZXIuZXJyb3JzJztcbmltcG9ydCB7IGlzUmljaFRleHRSb290Tm9kZSwgdHJhbnNsYXRlQ29udGVudGZ1bE5vZGVUeXBlVG9IdG1sVGFnIH0gZnJvbSAnLi9yaWNoLXRleHQtcmVuZGVyZXIudXRpbCc7XG5cbmV4cG9ydCBjb25zdCBSRU5ERVJfQ09NTUFORF9UWVBFID0ge1xuICBIVE1MX09QRU46IDAsXG4gIEhUTUxfQ0xPU0U6IDEsXG4gIFRFWFQ6IDIsXG4gIENPTVBPTkVOVDogMyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBSRU5ERVJfQ09NTUFORF9QT1NJVElPTiA9IHtcbiAgVFlQRTogMCxcbiAgTkVTVElOR19MRVZFTDogMSxcbiAgRE9NX1BPU0lUSU9OOiAyLFxuICBJTkRFWDogMyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBIVE1MX09QRU5fUkVOREVSX0NPTU1BTkRfUE9TSVRJT04gPSB7XG4gIEFUVFJJQlVURVM6IDQsXG4gIFRBR19OQU1FOiA1LFxuICBFTEVNRU5UX0lEOiA2LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEhUTUxfQ0xPU0VfUkVOREVSX0NPTU1BTkRfUE9TSVRJT04gPSB7XG4gIFRBR19OQU1FOiA0LFxuICBFTEVNRU5UX0lEOiA1LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFRFWFRfUkVOREVSX0NPTU1BTkRfUE9TSVRJT04gPSB7XG4gIFRFWFQ6IDQsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OID0ge1xuICBBVFRSSUJVVEVTOiA0LFxuICBDT01QT05FTlQ6IDUsXG4gIElOUFVUUzogNixcbiAgQ09NUE9ORU5UX1RZUEU6IDcsXG59IGFzIGNvbnN0O1xuXG50eXBlIEh0bWxPcGVuUmVuZGVyQ29tbWFuZCA9IFtcbiAgdHlwZTogdHlwZW9mIFJFTkRFUl9DT01NQU5EX1RZUEUuSFRNTF9PUEVOLFxuICBuZXN0aW5nTGV2ZWw6IG51bWJlcixcbiAgZG9tUG9zaXRpb246IG51bWJlcixcbiAgaW5kZXg6IG51bWJlcixcbiAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgdGFnTmFtZTogc3RyaW5nLFxuICBlbGVtZW50SWQ6IHN0cmluZyxcbl07XG5cbnR5cGUgSHRtbENsb3NlUmVuZGVyQ29tbWFuZCA9IFtcbiAgdHlwZTogdHlwZW9mIFJFTkRFUl9DT01NQU5EX1RZUEUuSFRNTF9DTE9TRSxcbiAgbmVzdGluZ0xldmVsOiBudW1iZXIsXG4gIGRvbVBvc2l0aW9uOiBudW1iZXIsXG4gIGluZGV4OiBudW1iZXIsXG4gIHRhZ05hbWU6IHN0cmluZyxcbiAgZWxlbWVudElkOiBzdHJpbmcsXG5dO1xuXG50eXBlIFRleHRSZW5kZXJDb21tYW5kID0gW1xuICB0eXBlOiB0eXBlb2YgUkVOREVSX0NPTU1BTkRfVFlQRS5URVhULFxuICBuZXN0aW5nTGV2ZWw6IG51bWJlcixcbiAgZG9tUG9zaXRpb246IG51bWJlcixcbiAgaW5kZXg6IG51bWJlcixcbiAgdGV4dDogc3RyaW5nLFxuXTtcblxudHlwZSBDb21wb25lbnRSZW5kZXJDb21tYW5kID0gW1xuICB0eXBlOiB0eXBlb2YgUkVOREVSX0NPTU1BTkRfVFlQRS5DT01QT05FTlQsXG4gIG5lc3RpbmdMZXZlbDogbnVtYmVyLFxuICBkb21Qb3NpdGlvbjogbnVtYmVyLFxuICBpbmRleDogbnVtYmVyLFxuICBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8dW5rbm93bj4sXG4gIGlucHV0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGNvbXBvbmVudFR5cGU6IHN0cmluZyxcbl07XG5cbnR5cGUgUmVuZGVyQ29tbWFuZCA9IEh0bWxPcGVuUmVuZGVyQ29tbWFuZCB8IEh0bWxDbG9zZVJlbmRlckNvbW1hbmQgfCBUZXh0UmVuZGVyQ29tbWFuZCB8IENvbXBvbmVudFJlbmRlckNvbW1hbmQ7XG5cbmV4cG9ydCBjb25zdCBSRU5ERVJfSU5TVFJVQ1RJT05fUE9TSVRJT04gPSB7XG4gIFRZUEU6IDAsXG4gIENPTU1BTkQ6IDEsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgUkVOREVSX0lOU1RSVUNUSU9OX1RZUEUgPSB7XG4gIENSRUFURTogMCxcbiAgVVBEQVRFOiAxLFxuICBERUxFVEU6IDIsXG4gIE1PVkU6IDMsXG59IGFzIGNvbnN0O1xuXG50eXBlIFJlbmRlckluc3RydWN0aW9uVHlwZVZhbHVlID0gKHR5cGVvZiBSRU5ERVJfSU5TVFJVQ1RJT05fVFlQRSlba2V5b2YgdHlwZW9mIFJFTkRFUl9JTlNUUlVDVElPTl9UWVBFXTtcblxudHlwZSBSZW5kZXJJbnN0cnVjdGlvbiA9IFtSZW5kZXJJbnN0cnVjdGlvblR5cGVWYWx1ZSwgUmVuZGVyQ29tbWFuZF07XG5cbmNvbnN0IE1BUktfVEFJTFdJTkRfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBib2xkOiAnZm9udC1ib2xkJyxcbiAgaXRhbGljOiAnaXRhbGljJyxcbiAgdW5kZXJsaW5lOiAndW5kZXJsaW5lJyxcbiAgY29kZTogJ2ZvbnQtbW9ubycsXG59O1xuXG5leHBvcnQgY29uc3QgbWFya3NUb0NsYXNzID0gKG1hcmtzOiBNYXJrW10pID0+IHtcbiAgY29uc3QgY2xhc3Nlczogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IG1hcmsgb2YgbWFya3MpIHtcbiAgICBsZXQga2xhc3MgPSBNQVJLX1RBSUxXSU5EX01BUFttYXJrLnR5cGVdO1xuXG4gICAgaWYgKCFrbGFzcykge1xuICAgICAgY29uc29sZS53YXJuKGBObyBjbGFzcyBmb3VuZCBmb3IgbWFyayB0eXBlISBGYWxsaW5nIGJhY2sgdG8gXCIke21hcmsudHlwZX1cIi5gLCBtYXJrKTtcblxuICAgICAga2xhc3MgPSBtYXJrLnR5cGU7XG4gICAgfVxuXG4gICAgY2xhc3Nlcy5wdXNoKGtsYXNzKTtcbiAgfVxuXG4gIHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0h0bWxPcGVuUmVuZGVyQ29tbWFuZCA9IChjb21tYW5kOiBSZW5kZXJDb21tYW5kKTogY29tbWFuZCBpcyBIdG1sT3BlblJlbmRlckNvbW1hbmQgPT4ge1xuICByZXR1cm4gY29tbWFuZFtSRU5ERVJfQ09NTUFORF9QT1NJVElPTi5UWVBFXSA9PT0gUkVOREVSX0NPTU1BTkRfVFlQRS5IVE1MX09QRU47XG59O1xuXG5leHBvcnQgY29uc3QgaXNIdG1sQ2xvc2VSZW5kZXJDb21tYW5kID0gKGNvbW1hbmQ6IFJlbmRlckNvbW1hbmQpOiBjb21tYW5kIGlzIEh0bWxDbG9zZVJlbmRlckNvbW1hbmQgPT4ge1xuICByZXR1cm4gY29tbWFuZFtSRU5ERVJfQ09NTUFORF9QT1NJVElPTi5UWVBFXSA9PT0gUkVOREVSX0NPTU1BTkRfVFlQRS5IVE1MX0NMT1NFO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGV4dFJlbmRlckNvbW1hbmQgPSAoY29tbWFuZDogUmVuZGVyQ29tbWFuZCk6IGNvbW1hbmQgaXMgVGV4dFJlbmRlckNvbW1hbmQgPT4ge1xuICByZXR1cm4gY29tbWFuZFtSRU5ERVJfQ09NTUFORF9QT1NJVElPTi5UWVBFXSA9PT0gUkVOREVSX0NPTU1BTkRfVFlQRS5URVhUO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ29tcG9uZW50UmVuZGVyQ29tbWFuZCA9IChjb21tYW5kOiBSZW5kZXJDb21tYW5kKTogY29tbWFuZCBpcyBDb21wb25lbnRSZW5kZXJDb21tYW5kID0+IHtcbiAgcmV0dXJuIGNvbW1hbmRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uVFlQRV0gPT09IFJFTkRFUl9DT01NQU5EX1RZUEUuQ09NUE9ORU5UO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlbmRlckNvbW1hbmRJZCA9IChjb21tYW5kOiBSZW5kZXJDb21tYW5kKSA9PiB7XG4gIGlmIChpc0h0bWxPcGVuUmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgIHJldHVybiBjb21tYW5kW0hUTUxfT1BFTl9SRU5ERVJfQ09NTUFORF9QT1NJVElPTi5FTEVNRU5UX0lEXTtcbiAgfSBlbHNlIGlmIChpc0h0bWxDbG9zZVJlbmRlckNvbW1hbmQoY29tbWFuZCkpIHtcbiAgICByZXR1cm4gY29tbWFuZFtIVE1MX0NMT1NFX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLkVMRU1FTlRfSURdO1xuICB9IGVsc2UgaWYgKGlzVGV4dFJlbmRlckNvbW1hbmQoY29tbWFuZCkpIHtcbiAgICByZXR1cm4gY29tbWFuZFtURVhUX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLlRFWFRdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjb21tYW5kW0NPTVBPTkVOVF9SRU5ERVJfQ09NTUFORF9QT1NJVElPTi5DT01QT05FTlRfVFlQRV07XG4gIH1cbn07XG5cbmNvbnN0IENMQVNTX0FUVFIgPSAnY2xhc3MnO1xuY29uc3QgREVGQVVMVF9DT01QT05FTlRfVFlQRVMgPSB7XG4gIElNQUdFOiAnJCQkX2V0LWltYWdlJyxcbiAgVklERU86ICckJCRfZXQtdmlkZW8nLFxuICBBVURJTzogJyQkJF9ldC1hdWRpbycsXG4gIEZJTEU6ICckJCRfZXQtZmlsZScsXG59O1xuXG50eXBlIEV4ZWN1dGVkQ29tbWFuZENhY2hlSXRlbUJhc2UgPSB7XG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xufTtcblxudHlwZSBFeGVjdXRlZENvbXBvbmVudENvbW1hbmRDYWNoZUl0ZW0gPSB7XG4gIGNvbW1hbmQ6IENvbXBvbmVudFJlbmRlckNvbW1hbmQ7XG4gIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPHVua25vd24+O1xufSAmIEV4ZWN1dGVkQ29tbWFuZENhY2hlSXRlbUJhc2U7XG5cbnR5cGUgRXhlY3V0ZWRIdG1sQ29tbWFuZENhY2hlSXRlbSA9IHtcbiAgY29tbWFuZDogSHRtbE9wZW5SZW5kZXJDb21tYW5kIHwgSHRtbENsb3NlUmVuZGVyQ29tbWFuZDtcbn0gJiBFeGVjdXRlZENvbW1hbmRDYWNoZUl0ZW1CYXNlO1xuXG50eXBlIEV4ZWN1dGVkVGV4dENvbW1hbmRDYWNoZUl0ZW0gPSB7XG4gIGNvbW1hbmQ6IFRleHRSZW5kZXJDb21tYW5kO1xuICB0ZXh0Tm9kZTogdW5rbm93bjtcbn0gJiBFeGVjdXRlZENvbW1hbmRDYWNoZUl0ZW1CYXNlO1xuXG50eXBlIEV4ZWN1dGVkQ29tbWFuZENhY2hlSXRlbSA9XG4gIHwgRXhlY3V0ZWRDb21wb25lbnRDb21tYW5kQ2FjaGVJdGVtXG4gIHwgRXhlY3V0ZWRIdG1sQ29tbWFuZENhY2hlSXRlbVxuICB8IEV4ZWN1dGVkVGV4dENvbW1hbmRDYWNoZUl0ZW07XG5cbmV4cG9ydCBjb25zdCBpc0V4ZWN1dGVkQ29tcG9uZW50Q29tbWFuZENhY2hlSXRlbSA9IChcbiAgY2FjaGU6IEV4ZWN1dGVkQ29tbWFuZENhY2hlSXRlbSxcbik6IGNhY2hlIGlzIEV4ZWN1dGVkQ29tcG9uZW50Q29tbWFuZENhY2hlSXRlbSA9PiB7XG4gIHJldHVybiBpc0NvbXBvbmVudFJlbmRlckNvbW1hbmQoY2FjaGUuY29tbWFuZCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFeGVjdXRlZEh0bWxPclRleHRDb21tYW5kQ2FjaGVJdGVtID0gKFxuICBjYWNoZTogRXhlY3V0ZWRDb21tYW5kQ2FjaGVJdGVtLFxuKTogY2FjaGUgaXMgRXhlY3V0ZWRIdG1sQ29tbWFuZENhY2hlSXRlbSA9PiB7XG4gIHJldHVybiBpc0h0bWxDbG9zZVJlbmRlckNvbW1hbmQoY2FjaGUuY29tbWFuZCkgfHwgaXNIdG1sT3BlblJlbmRlckNvbW1hbmQoY2FjaGUuY29tbWFuZCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFeGVjdXRlZFRleHRDb21tYW5kQ2FjaGVJdGVtID0gKFxuICBjYWNoZTogRXhlY3V0ZWRDb21tYW5kQ2FjaGVJdGVtLFxuKTogY2FjaGUgaXMgRXhlY3V0ZWRUZXh0Q29tbWFuZENhY2hlSXRlbSA9PiB7XG4gIHJldHVybiBpc1RleHRSZW5kZXJDb21tYW5kKGNhY2hlLmNvbW1hbmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IEVUX0NPTlRFTlRGVUxfQU5ZX0VOVFJZX0NPTlRFTlRfVFlQRV9TWVNfSUQgPSAnJCQkX2V0LWNvbnRlbnRmdWwtYW55LWVudHJ5LWNvbnRlbnQtdHlwZS1zeXMtaWQnO1xuXG5leHBvcnQgdHlwZSBDb250ZW50ZnVsSW5jbHVkZU1hcCA9IHtcbiAgLyoqXG4gICAqIFNlbGVjdCBhbiBlbnRyeSBieSBpdHMgSUQgYW5kIGNvbnRlbnQgdHlwZSBJRC5cbiAgICpcbiAgICogVGhlIGNvbnRlbnQgdHlwZSBJRCBjYW4gYmUgZm91bmQgaW5zaWRlIHRoZSBlbnRyeSAtPiBzeXMgLT4gY29udGVudFR5cGUgLT4gc3lzIC0+IGlkIHByb3BlcnR5LlxuICAgKlxuICAgKiBZb3UgY2FuIHByb3ZpZGUgdGhlIGBFVF9DT05URU5URlVMX0FOWV9FTlRSWV9DT05URU5UX1RZUEVfU1lTX0lEYCBjb25zdGFudCB0byBtYXRjaCBhbnkgZW50cnkgc3lzIElELlxuICAgKiBCdXQgYmUgYXdhcmUgdGhhdCB0aGlzIHdpbGwgcmV0dXJuIHRoZSBlbnRyeSBhcyBpcyB3aXRob3V0IGFueSB0eXBlIGNoZWNraW5nLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgZ2V0RW50cnk6IDxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT4oaWQ6IHN0cmluZywgY29udGVudFR5cGVJZDogc3RyaW5nKSA9PiBDb250ZW50ZnVsRW50cnk8VD4gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBTZWxlY3QgbXVsdGlwbGUgZW50cmllcyBieSB0aGVpciBJRHMgYW5kIGNvbnRlbnQgdHlwZSBJRC5cbiAgICogSWYgYW4gZW50cnkgaXMgbm90IGZvdW5kLCBpdCB3aWxsIGJlIG9taXR0ZWQgZnJvbSB0aGUgcmVzdWx0LlxuICAgKlxuICAgKiBUaGUgY29udGVudCB0eXBlIElEIGNhbiBiZSBmb3VuZCBpbnNpZGUgdGhlIGVudHJ5IC0+IHN5cyAtPiBjb250ZW50VHlwZSAtPiBzeXMgLT4gaWQgcHJvcGVydHkuXG4gICAqXG4gICAqIFlvdSBjYW4gcHJvdmlkZSB0aGUgYEVUX0NPTlRFTlRGVUxfQU5ZX0VOVFJZX0NPTlRFTlRfVFlQRV9TWVNfSURgIGNvbnN0YW50IHRvIG1hdGNoIGFueSBlbnRyeSBzeXMgSUQuXG4gICAqIEJ1dCBiZSBhd2FyZSB0aGF0IHRoaXMgd2lsbCByZXR1cm4gdGhlIGVudHJ5IGFzIGlzIHdpdGhvdXQgYW55IHR5cGUgY2hlY2tpbmcuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBnZXRFbnRyaWVzOiA8VCBleHRlbmRzIHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxuICAgIGlkczogc3RyaW5nW10gfCBDb250ZW50ZnVsRW50cnlMaW5rSXRlbVtdLFxuICAgIGNvbnRlbnRUeXBlSWQ6IHN0cmluZyxcbiAgKSA9PiBDb250ZW50ZnVsRW50cnk8VD5bXTtcblxuICAvKipcbiAgICogU2VsZWN0IGFuIGFzc2V0IGJ5IGl0cyBJRC5cbiAgICovXG4gIGdldEFzc2V0OiAoaWQ6IHN0cmluZykgPT4gQ29udGVudGZ1bFJlc3RBc3NldCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBtdWx0aXBsZSBhc3NldHMgYnkgdGhlaXIgSURzLiBJZiBhbiBhc3NldCBpcyBub3QgZm91bmQsIGl0IHdpbGwgYmUgb21pdHRlZCBmcm9tIHRoZSByZXN1bHQuXG4gICAqL1xuICBnZXRBc3NldHM6IChpZHM6IHN0cmluZ1tdKSA9PiBDb250ZW50ZnVsUmVzdEFzc2V0W107XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdldC1jb250ZW50ZnVsLXJpY2gtdGV4dC1yZW5kZXJlcicsXG4gIHRlbXBsYXRlOiBgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LWNvbnRlbnRmdWwtcmljaC10ZXh0LXJlbmRlcmVyJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudGZ1bFJpY2hUZXh0UmVuZGVyZXJDb21wb25lbnQge1xuICBfdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgX3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgX2RvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgX2NvbmZpZyA9IGluamVjdChDT05URU5URlVMX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyBjcmVhdGVDb250ZW50ZnVsQ29uZmlnKCk7XG5cbiAgLyoqXG4gICAqIEEgY2FjaGUgZm9yIGFsbCBleGVjdXRlZCBjb21tYW5kcyB0aGF0IGFyZSBub3QgZGVsZXRlZC5cbiAgICogVGhpcyBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHJlbmRlcmVkIGVsZW1lbnRzIGFuZCBjb21wb25lbnRzLlxuICAgKiBUaGUga2V5IGlzIHRoZSByZW5kZXIgY29tbWFuZCBlbGVtZW50IElELlxuICAgKi9cbiAgX2V4ZWN1dGVkQ29tbWFuZHNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBFeGVjdXRlZENvbW1hbmRDYWNoZUl0ZW0+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50ZnVsIHJlc3BvbnNlIGdvdHRlbiB2aWEgdGhlaXIgUkVTVCBhcGkuXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cuY29udGVudGZ1bC5jb20vZGV2ZWxvcGVycy9kb2NzL3JlZmVyZW5jZXMvY29udGVudC1kZWxpdmVyeS1hcGkvIy9yZWZlcmVuY2UvZW50cmllcy9lbnRyaWVzLWNvbGxlY3Rpb25cbiAgICovXG4gIGNvbnRlbnQgPSBpbnB1dC5yZXF1aXJlZDxDb250ZW50ZnVsQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHdoZXJlIHRoZSByaWNoIHRleHQgZmllbGQgaXMgaW5zaWRlIHRoZSBjb250ZW50ZnVsIHJlc3BvbnNlLiBEb3QgYW5kIGFycmF5IG5vdGF0aW9uIGlzIGFsbG93ZWQuXG4gICAqIEBkZWZhdWx0IFwiaXRlbXNbMF0uZmllbGRzLmh0bWxcIlxuICAgKi9cbiAgcmljaFRleHRQYXRoID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBhbGwgaW5jbHVkZXMgaW4gdGhlIGNvbnRlbnRmdWwgcmVzcG9uc2UuXG4gICAqIFRoaXMgaXMgdXNlZnVsIGZvciBsb29raW5nIHVwIGFzc2V0cyBhbmQgZW50cmllcyB0aGF0IGFyZSByZWZlcmVuY2VkIGluIHRoZSByaWNoIHRleHQgd2l0aG91dCBoYXZpbmcgdG8gdXNlIGxvb3BzLlxuICAgKi9cbiAgY29udGVudEluY2x1ZGVzTWFwID0gY29tcHV0ZWQ8Q29udGVudGZ1bEluY2x1ZGVNYXA+KCgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50KCk7XG4gICAgY29uc3QgYXNzZXRzID0gY29udGVudD8uaW5jbHVkZXMuQXNzZXQ7XG4gICAgY29uc3QgZW50cmllcyA9IGNvbnRlbnQ/LmluY2x1ZGVzLkVudHJ5O1xuXG4gICAgY29uc3QgYXNzZXRNYXAgPSBuZXcgTWFwKGFzc2V0cz8ubWFwKChhc3NldCkgPT4gW2Fzc2V0LnN5cy5pZCwgYXNzZXRdKSA/PyBbXSk7XG4gICAgY29uc3QgZW50cnlNYXAgPSBuZXcgTWFwKGVudHJpZXM/Lm1hcCgoZW50cnkpID0+IFtlbnRyeS5zeXMuaWQsIGVudHJ5XSkgPz8gW10pO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBnZXRFbnRyeSA9IDxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT4oaWQ6IHN0cmluZywgY29udGVudFR5cGVJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJ5TWFwLmdldChpZCk7XG5cbiAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdFbnRyeSBub3QgZm91bmQhIFdpbGwgcmV0dXJuIG51bGwuIElzIHRoZSBpbmNsdWRlIHF1ZXJ5IHBhcmFtIHRvIGxvdz8nLCB7IGlkLCBlbnRyeU1hcCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29udGVudFR5cGVJZCA9PT0gRVRfQ09OVEVOVEZVTF9BTllfRU5UUllfQ09OVEVOVF9UWVBFX1NZU19JRCkge1xuICAgICAgICByZXR1cm4gZW50cnkgYXMgQ29udGVudGZ1bEVudHJ5PFQ+O1xuICAgICAgfVxuXG4gICAgICBpZiAoZW50cnkuc3lzLmNvbnRlbnRUeXBlLnN5cy5pZCAhPT0gY29udGVudFR5cGVJZCkge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0VudHJ5IHN5cyBJRCBkb2VzIG5vdCBtYXRjaCB0aGUgcHJvdmlkZWQgc3lzIElEISBXaWxsIHJldHVybiBudWxsLicsIHtcbiAgICAgICAgICAgIGVudHJ5LFxuICAgICAgICAgICAgc3lzSWQ6IGNvbnRlbnRUeXBlSWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudHJ5IGFzIENvbnRlbnRmdWxFbnRyeTxUPjtcbiAgICB9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBnZXRFbnRyaWVzID0gPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICAgIGlkczogc3RyaW5nW10gfCBDb250ZW50ZnVsRW50cnlMaW5rSXRlbVtdLFxuICAgICAgY29udGVudFR5cGVJZDogc3RyaW5nLFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgZW50cmllcyA9IGlkc1xuICAgICAgICAubWFwKChpZCkgPT4gKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycgPyBpZCA6IGlkLnN5cy5pZCkpXG4gICAgICAgIC5tYXAoKGlkKSA9PiBnZXRFbnRyeTxUPihpZCwgY29udGVudFR5cGVJZCkpXG4gICAgICAgIC5maWx0ZXIoKGVudHJ5KTogZW50cnkgaXMgQ29udGVudGZ1bEVudHJ5PFQ+ID0+IGVudHJ5ICE9PSBudWxsKTtcblxuICAgICAgcmV0dXJuIGVudHJpZXM7XG4gICAgfTtcblxuICAgIGNvbnN0IGdldEFzc2V0ID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBhc3NldE1hcC5nZXQoaWQpID8/IG51bGw7XG4gICAgfTtcblxuICAgIGNvbnN0IGdldEFzc2V0cyA9IChpZHM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICByZXR1cm4gaWRzLm1hcCgoaWQpID0+IGdldEFzc2V0KGlkKSkuZmlsdGVyKChhc3NldCk6IGFzc2V0IGlzIENvbnRlbnRmdWxSZXN0QXNzZXQgPT4gYXNzZXQgIT09IG51bGwpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0RW50cnksXG4gICAgICBnZXRFbnRyaWVzLFxuICAgICAgZ2V0QXNzZXQsXG4gICAgICBnZXRBc3NldHMsXG4gICAgfTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRoZSByaWNoIHRleHQgZGF0YSB0aGF0IHNob3VsZCBiZSByZW5kZXJlZC5cbiAgICovXG4gIHJpY2hUZXh0RGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50KCk7XG4gICAgY29uc3QgcmljaFRleHRQYXRoID0gdGhpcy5yaWNoVGV4dFBhdGgoKTtcblxuICAgIGlmICghY29udGVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcmljaFRleHQgPSBnZXRPYmplY3RQcm9wZXJ0eShjb250ZW50IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJpY2hUZXh0UGF0aCk7XG5cbiAgICBpZiAoIWlzT2JqZWN0KHJpY2hUZXh0KSkge1xuICAgICAgdGhyb3cgcmljaFRleHRSZW5kZXJlckVycm9yKCdyaWNoX3RleHRfdW5kZWZpbmVkJywgZmFsc2UsIHsgY29udGVudCwgcmljaFRleHRQYXRoIH0pO1xuICAgIH1cblxuICAgIGlmICghaXNSaWNoVGV4dFJvb3ROb2RlKHJpY2hUZXh0KSkge1xuICAgICAgdGhyb3cgcmljaFRleHRSZW5kZXJlckVycm9yKCdyaWNoX3RleHRfd3JvbmdfdHlwZScsIGZhbHNlLCB7IGNvbnRlbnQsIHJpY2hUZXh0UGF0aCB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmljaFRleHQgYXMgUmljaFRleHRSZXNwb25zZTtcbiAgfSk7XG5cbiAgcmVuZGVyQ29tbWFuZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmljaFRleHREYXRhID0gdGhpcy5yaWNoVGV4dERhdGEoKTtcblxuICAgIGlmICghcmljaFRleHREYXRhKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVJlbmRlckNvbW1hbmRzKHJpY2hUZXh0RGF0YSk7XG4gIH0pO1xuXG4gIHJlbmRlckNvbW1hbmRIaXN0b3J5ID0gdG9TaWduYWwoXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMucmVuZGVyQ29tbWFuZHMpLnBpcGUoc3RhcnRXaXRoKFtdIGFzIFJlbmRlckNvbW1hbmRbXSksIHBhaXJ3aXNlKCkpLFxuICAgIHsgaW5pdGlhbFZhbHVlOiBbW10sIFtdXSB9LFxuICApO1xuXG4gIHByZXZpb3VzUmVuZGVyQ29tbWFuZE1hcCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBbcHJldkNvbW1hbmRzXSA9IHRoaXMucmVuZGVyQ29tbWFuZEhpc3RvcnkoKTtcblxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBSZW5kZXJDb21tYW5kPigpO1xuXG4gICAgZm9yIChjb25zdCBjb21tYW5kIG9mIHByZXZDb21tYW5kcykge1xuICAgICAgbWFwLnNldChnZXRSZW5kZXJDb21tYW5kSWQoY29tbWFuZCksIGNvbW1hbmQpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXA7XG4gIH0pO1xuXG4gIHJlbmRlckluc3RydWN0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb21tYW5kcyA9IHRoaXMucmVuZGVyQ29tbWFuZHMoKTtcbiAgICBjb25zdCBwcmV2aW91c1JlbmRlckNvbW1hbmRNYXAgPSBuZXcgTWFwKHRoaXMucHJldmlvdXNSZW5kZXJDb21tYW5kTWFwKCkpO1xuXG4gICAgY29uc3QgaW5zdHJ1Y3Rpb25zOiBSZW5kZXJJbnN0cnVjdGlvbltdID0gW107XG5cbiAgICAvLyByZW1vdmUgZGVsZXRlZCBjb21wb25lbnRzIGFzIHdlbGwgYXMgYWxsIG90aGVyIGVsZW1lbnRzXG4gICAgZm9yIChjb25zdCBbLCBjb21tYW5kXSBvZiBwcmV2aW91c1JlbmRlckNvbW1hbmRNYXApIHtcbiAgICAgIGlmIChpc0NvbXBvbmVudFJlbmRlckNvbW1hbmQoY29tbWFuZCkpIHtcbiAgICAgICAgLy8ga2VlcCB0aGUgY29tcG9uZW50IGFyb3VuZCBpZiBpdCdzIHN0aWxsIGluIHRoZSBuZXcgY29tbWFuZHNcbiAgICAgICAgaWYgKGNvbW1hbmRzLnNvbWUoKGMpID0+IGdldFJlbmRlckNvbW1hbmRJZChjKSA9PT0gZ2V0UmVuZGVyQ29tbWFuZElkKGNvbW1hbmQpKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGluc3RydWN0aW9ucy5wdXNoKFtSRU5ERVJfSU5TVFJVQ1RJT05fVFlQRS5ERUxFVEUsIGNvbW1hbmRdKTtcblxuICAgICAgLy8gcmVtb3ZlIGZyb20gbWFwIHRvIG1hcmsgYXMgdXNlZFxuICAgICAgcHJldmlvdXNSZW5kZXJDb21tYW5kTWFwLmRlbGV0ZShnZXRSZW5kZXJDb21tYW5kSWQoY29tbWFuZCkpO1xuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGluZGV4ZXMgb2YgdGhlIGNvbW1hbmRzIHJlbWFpbmluZyBpbiB0aGUgcHJldmlvdXNSZW5kZXJDb21tYW5kTWFwIGluIHRoZSBuZXcgY29tbWFuZHMgYXJyYXkuXG4gICAgY29uc3QgbGFzdENvbXBvbmVudEluZGV4ZXM6IHsgbmV3SW5kZXg6IG51bWJlcjsgcHJldkluZGV4OiBudW1iZXI7IGNvbW1hbmQ6IFJlbmRlckNvbW1hbmQgfVtdID0gW107XG4gICAgZm9yIChjb25zdCBbaWQsIGNvbW1hbmRdIG9mIHByZXZpb3VzUmVuZGVyQ29tbWFuZE1hcCkge1xuICAgICAgY29uc3QgaW5kZXggPSBjb21tYW5kcy5maW5kSW5kZXgoKGMpID0+IGdldFJlbmRlckNvbW1hbmRJZChjKSA9PT0gaWQpO1xuICAgICAgY29uc3QgbmV3Q29tbWFuZCA9IGNvbW1hbmRzW2luZGV4XSE7XG5cbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21tYW5kIG5vdCBmb3VuZCEnKTtcbiAgICAgIH1cblxuICAgICAgbGFzdENvbXBvbmVudEluZGV4ZXMucHVzaCh7XG4gICAgICAgIG5ld0luZGV4OiBpbmRleCxcbiAgICAgICAgcHJldkluZGV4OiBjb21tYW5kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLklOREVYXSxcbiAgICAgICAgY29tbWFuZDogbmV3Q29tbWFuZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxhc3RDb21wb25lbnRJbmRleGVzLnNvcnQoKGEsIGIpID0+IGEubmV3SW5kZXggLSBiLm5ld0luZGV4KTtcblxuICAgIC8vIGNoZWNrIGlmIHRoZSBwcmV2SW5kZXggYXJlIGluIG9yZGVyIGFzY2VuZGluZ1xuICAgIC8vIGZvciBpbmRleGVzIHRoYXQgYXJlIG5vdCBpbiBvcmRlciwgY3JlYXRlIGEgbW92ZSBpbnN0cnVjdGlvblxuICAgIC8vIGZvciBpbmRleGVzIHRoYXQgYXJlIGluIG9yZGVyLCBjcmVhdGUgYW4gdXBkYXRlIGluc3RydWN0aW9uXG4gICAgbGV0IG1vdmVDaGVja0luZGV4ID0gMDtcbiAgICB3aGlsZSAobW92ZUNoZWNrSW5kZXggPCBsYXN0Q29tcG9uZW50SW5kZXhlcy5sZW5ndGggLSAxKSB7XG4gICAgICBjb25zdCBtb3ZlQ3VyciA9IGxhc3RDb21wb25lbnRJbmRleGVzW21vdmVDaGVja0luZGV4XTtcbiAgICAgIGNvbnN0IG1vdmVOZXh0ID0gbGFzdENvbXBvbmVudEluZGV4ZXNbbW92ZUNoZWNrSW5kZXggKyAxXTtcblxuICAgICAgaWYgKCFtb3ZlQ3VyciB8fCAhbW92ZU5leHQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb3ZlQ3Vyci5wcmV2SW5kZXggPiBtb3ZlTmV4dC5wcmV2SW5kZXgpIHtcbiAgICAgICAgbGFzdENvbXBvbmVudEluZGV4ZXMuc3BsaWNlKG1vdmVDaGVja0luZGV4ICsgMSwgMSk7XG4gICAgICAgIGluc3RydWN0aW9ucy5wdXNoKFtSRU5ERVJfSU5TVFJVQ1RJT05fVFlQRS5NT1ZFLCBtb3ZlTmV4dC5jb21tYW5kXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnN0cnVjdGlvbnMucHVzaChbUkVOREVSX0lOU1RSVUNUSU9OX1RZUEUuVVBEQVRFLCBtb3ZlTmV4dC5jb21tYW5kXSk7XG4gICAgICAgIG1vdmVDaGVja0luZGV4Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb21tYW5kIG9mIGNvbW1hbmRzKSB7XG4gICAgICBjb25zdCBpZCA9IGdldFJlbmRlckNvbW1hbmRJZChjb21tYW5kKTtcblxuICAgICAgaWYgKGlzQ29tcG9uZW50UmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgICAgICBjb25zdCBwcmV2aW91c0NvbW1hbmQgPSBwcmV2aW91c1JlbmRlckNvbW1hbmRNYXAuZ2V0KGlkKTtcblxuICAgICAgICBpZiAoIXByZXZpb3VzQ29tbWFuZCkge1xuICAgICAgICAgIC8vIGNyZWF0ZVxuICAgICAgICAgIGluc3RydWN0aW9ucy5wdXNoKFtSRU5ERVJfSU5TVFJVQ1RJT05fVFlQRS5DUkVBVEUsIGNvbW1hbmRdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY3JlYXRlXG4gICAgICAgIGluc3RydWN0aW9ucy5wdXNoKFtSRU5ERVJfSU5TVFJVQ1RJT05fVFlQRS5DUkVBVEUsIGNvbW1hbmRdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0b09ic2VydmFibGUodGhpcy5yZW5kZXJJbnN0cnVjdGlvbnMpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICAgIHRhcCgoaW5zdHJ1Y3Rpb25zKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZXhlY0luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZVJlbmRlckNvbW1hbmRzKHJpY2hUZXh0RGF0YTogUmljaFRleHRSZXNwb25zZSkge1xuICAgIC8qKiBMaXN0IG9mIGFsbCByZW5kZXIgY29tbWFuZHMgKi9cbiAgICBjb25zdCByb290Q29tbWFuZHM6IFJlbmRlckNvbW1hbmRbXSA9IFtdO1xuXG4gICAgLyoqIENvdW50ZXIgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGh0bWwgZWxlbWVudCBJRHMuICovXG4gICAgbGV0IGVsZW1lbnRJZCA9IDA7XG5cbiAgICAvKiogQ291bnRlciBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgY29tcG9uZW50IElEcy4gKi9cbiAgICBjb25zdCBjb21wb25lbnRJZE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgICAvKiogVGhlIG5lc3RpbmcgbGV2ZWwgb2YgdGhlIGN1cnJlbnQgbm9kZS4gKi9cbiAgICBsZXQgbmVzdGluZ0xldmVsID0gMDtcblxuICAgIC8qKiBUaGUgcG9zaXRpb24gKGluZGV4KSBvZiB0aGUgY3VycmVudCBub2RlIGluc2lkZSB0aGUgcGFyZW50IG5vZGUuICovXG4gICAgbGV0IGRvbVBvc2l0aW9uID0gMDtcblxuICAgIGxldCBjb21tYW5kSW5kZXggPSAwO1xuXG4gICAgY29uc3QgdHJhdmVyc2UgPSAobm9kZTogQmxvY2sgfCBJbmxpbmUgfCBUZXh0LCBwYXJlbnQ6IFJlbmRlckNvbW1hbmQgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgICAgc3dpdGNoIChub2RlLm5vZGVUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3RleHQnOiB7XG4gICAgICAgICAgLy8gUmVuZGVyIG1lZGlhXG4gICAgICAgICAgY29uc3QgdHlwZSA9IFJFTkRFUl9DT01NQU5EX1RZUEUuVEVYVDtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gbm9kZS52YWx1ZTtcblxuICAgICAgICAgIGlmICghdGV4dCkgYnJlYWs7XG5cbiAgICAgICAgICBjb25zdCBjb21tYW5kOiBUZXh0UmVuZGVyQ29tbWFuZCA9IFt0eXBlLCBuZXN0aW5nTGV2ZWwsIGRvbVBvc2l0aW9uLCBjb21tYW5kSW5kZXgrKywgdGV4dF07XG5cbiAgICAgICAgICByb290Q29tbWFuZHMucHVzaChjb21tYW5kKTtcbiAgICAgICAgICBkb21Qb3NpdGlvbisrO1xuXG4gICAgICAgICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgICAgICAgIHRocm93IHJpY2hUZXh0UmVuZGVyZXJFcnJvcigndGV4dF9wYXJlbnRfbm90X2ZvdW5kJywgZmFsc2UsIHsgbm9kZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFpc0h0bWxPcGVuUmVuZGVyQ29tbWFuZChwYXJlbnQpICYmICFpc0NvbXBvbmVudFJlbmRlckNvbW1hbmQocGFyZW50KSkge1xuICAgICAgICAgICAgdGhyb3cgcmljaFRleHRSZW5kZXJlckVycm9yKCd0ZXh0X3BhcmVudF93cm9uZ190eXBlJywgZmFsc2UsIHsgbm9kZSwgcGFyZW50IH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXNQb3NpdGlvbiA9XG4gICAgICAgICAgICBwYXJlbnRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uVFlQRV0gPT09IFJFTkRFUl9DT01NQU5EX1RZUEUuSFRNTF9PUEVOXG4gICAgICAgICAgICAgID8gSFRNTF9PUEVOX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLkFUVFJJQlVURVNcbiAgICAgICAgICAgICAgOiBDT01QT05FTlRfUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uQVRUUklCVVRFUztcblxuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBwYXJlbnRbYXR0cmlidXRlc1Bvc2l0aW9uXTtcblxuICAgICAgICAgIGlmIChub2RlLm1hcmtzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbWFya0NsYXNzZXMgPSBtYXJrc1RvQ2xhc3Mobm9kZS5tYXJrcyk7XG5cbiAgICAgICAgICAgIGlmIChDTEFTU19BVFRSIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlc1tDTEFTU19BVFRSXSArPSBgICR7bWFya0NsYXNzZXN9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXNbQ0xBU1NfQVRUUl0gPSBtYXJrQ2xhc3NlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgQkxPQ0tTLkVNQkVEREVEX0FTU0VUOiB7XG4gICAgICAgICAgLy8gUmVuZGVyIG1lZGlhXG4gICAgICAgICAgY29uc3QgdHlwZSA9IFJFTkRFUl9DT01NQU5EX1RZUEUuQ09NUE9ORU5UO1xuICAgICAgICAgIGNvbnN0IGFzc2V0SWQgPSBub2RlLmRhdGFbJ3RhcmdldCddPy5zeXM/LmlkO1xuXG4gICAgICAgICAgaWYgKCFhc3NldElkKSB7XG4gICAgICAgICAgICB0aHJvdyByaWNoVGV4dFJlbmRlcmVyRXJyb3IoJ2Fzc2V0X2lkX25vdF9mb3VuZCcsIGZhbHNlLCB7IG5vZGUgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYXNzZXQgPSB0aGlzLmNvbnRlbnRJbmNsdWRlc01hcCgpLmdldEFzc2V0KGFzc2V0SWQpO1xuXG4gICAgICAgICAgaWYgKCFhc3NldCkge1xuICAgICAgICAgICAgdGhyb3cgcmljaFRleHRSZW5kZXJlckVycm9yKCdhc3NldF9ub3RfZm91bmQnLCBmYWxzZSwgeyBhc3NldElkLCBub2RlIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gYXNzZXQuZmllbGRzLmZpbGUuY29udGVudFR5cGU7XG4gICAgICAgICAgY29uc3QgYXNzZXRDb21wb25lbnRzID0gdGhpcy5fY29uZmlnLmNvbXBvbmVudHM7XG5cbiAgICAgICAgICBjb25zdCBpc0ltYWdlID0gY29udGVudFR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJyk7XG4gICAgICAgICAgY29uc3QgaXNWaWRlbyA9IGNvbnRlbnRUeXBlLnN0YXJ0c1dpdGgoJ3ZpZGVvLycpO1xuICAgICAgICAgIGNvbnN0IGlzQXVkaW8gPSBjb250ZW50VHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKTtcblxuICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGlzSW1hZ2VcbiAgICAgICAgICAgID8gYXNzZXRDb21wb25lbnRzLmltYWdlXG4gICAgICAgICAgICA6IGlzVmlkZW9cbiAgICAgICAgICAgICAgPyBhc3NldENvbXBvbmVudHMudmlkZW9cbiAgICAgICAgICAgICAgOiBpc0F1ZGlvXG4gICAgICAgICAgICAgICAgPyBhc3NldENvbXBvbmVudHMuYXVkaW9cbiAgICAgICAgICAgICAgICA6IGFzc2V0Q29tcG9uZW50cy5maWxlO1xuXG4gICAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IGlzSW1hZ2VcbiAgICAgICAgICAgID8gREVGQVVMVF9DT01QT05FTlRfVFlQRVMuSU1BR0VcbiAgICAgICAgICAgIDogaXNWaWRlb1xuICAgICAgICAgICAgICA/IERFRkFVTFRfQ09NUE9ORU5UX1RZUEVTLlZJREVPXG4gICAgICAgICAgICAgIDogaXNBdWRpb1xuICAgICAgICAgICAgICAgID8gREVGQVVMVF9DT01QT05FTlRfVFlQRVMuQVVESU9cbiAgICAgICAgICAgICAgICA6IERFRkFVTFRfQ09NUE9ORU5UX1RZUEVTLkZJTEU7XG5cbiAgICAgICAgICBsZXQgY29tcG9uZW50SWQgPSBjb21wb25lbnRJZE1hcC5nZXQoY29tcG9uZW50VHlwZSkgPz8gLTE7XG4gICAgICAgICAgY29uc3QgaWQgPSBjb21wb25lbnRUeXBlICsgKytjb21wb25lbnRJZDtcbiAgICAgICAgICBjb21wb25lbnRJZE1hcC5zZXQoY29tcG9uZW50VHlwZSwgY29tcG9uZW50SWQpO1xuXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuXG4gICAgICAgICAgY29uc3QgaW5wdXRzID0ge1xuICAgICAgICAgICAgYXNzZXQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGNvbW1hbmQ6IENvbXBvbmVudFJlbmRlckNvbW1hbmQgPSBbXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbmVzdGluZ0xldmVsLFxuICAgICAgICAgICAgZG9tUG9zaXRpb24sXG4gICAgICAgICAgICBjb21tYW5kSW5kZXgrKyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBjb21wb25lbnQsXG4gICAgICAgICAgICBpbnB1dHMsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICBdO1xuXG4gICAgICAgICAgcm9vdENvbW1hbmRzLnB1c2goY29tbWFuZCk7XG5cbiAgICAgICAgICBkb21Qb3NpdGlvbisrO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIEJMT0NLUy5FTUJFRERFRF9FTlRSWTpcbiAgICAgICAgY2FzZSBJTkxJTkVTLkVNQkVEREVEX0VOVFJZOiB7XG4gICAgICAgICAgLy8gUmVuZGVyIGNvbXBvbmVudFxuICAgICAgICAgIGNvbnN0IHR5cGUgPSBSRU5ERVJfQ09NTUFORF9UWVBFLkNPTVBPTkVOVDtcbiAgICAgICAgICBjb25zdCBlbnRyeUlkID0gbm9kZS5kYXRhWyd0YXJnZXQnXT8uc3lzPy5pZDtcblxuICAgICAgICAgIGlmICghZW50cnlJZCkge1xuICAgICAgICAgICAgdGhyb3cgcmljaFRleHRSZW5kZXJlckVycm9yKCdlbnRyeV9pZF9ub3RfZm91bmQnLCBmYWxzZSwgeyBub2RlIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5jb250ZW50SW5jbHVkZXNNYXAoKS5nZXRFbnRyeShlbnRyeUlkLCBFVF9DT05URU5URlVMX0FOWV9FTlRSWV9DT05URU5UX1RZUEVfU1lTX0lEKTtcblxuICAgICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIHRocm93IHJpY2hUZXh0UmVuZGVyZXJFcnJvcignZW50cnlfbm90X2ZvdW5kJywgZmFsc2UsIHsgZW50cnlJZCwgbm9kZSB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjb21wb25lbnRUeXBlID0gZW50cnkuc3lzLmNvbnRlbnRUeXBlLnN5cy5pZDtcblxuICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuX2NvbmZpZy5jdXN0b21Db21wb25lbnRzW2NvbXBvbmVudFR5cGVdO1xuXG4gICAgICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRocm93IHJpY2hUZXh0UmVuZGVyZXJFcnJvcignY3VzdG9tX2NvbXBvbmVudF9ub3RfZm91bmQnLCBmYWxzZSwge1xuICAgICAgICAgICAgICBjb21wb25lbnRUeXBlLFxuICAgICAgICAgICAgICBjdXN0b21Db21wb25lbnRzOiB0aGlzLl9jb25maWcuY3VzdG9tQ29tcG9uZW50cyxcbiAgICAgICAgICAgICAgZW50cnksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0ge307XG4gICAgICAgICAgbGV0IGNvbXBvbmVudElkID0gY29tcG9uZW50SWRNYXAuZ2V0KGNvbXBvbmVudFR5cGUpID8/IC0xO1xuICAgICAgICAgIGNvbnN0IGlkID0gY29tcG9uZW50VHlwZSArICsrY29tcG9uZW50SWQ7XG4gICAgICAgICAgY29tcG9uZW50SWRNYXAuc2V0KGNvbXBvbmVudFR5cGUsIGNvbXBvbmVudElkKTtcblxuICAgICAgICAgIGNvbnN0IGlucHV0cyA9IHtcbiAgICAgICAgICAgIGZpZWxkczogZW50cnkuZmllbGRzLFxuICAgICAgICAgICAgbWV0YWRhdGE6IGVudHJ5Lm1ldGFkYXRhLFxuICAgICAgICAgICAgc3lzOiBlbnRyeS5zeXMsXG4gICAgICAgICAgICBpbmNsdWRlczogdGhpcy5jb250ZW50SW5jbHVkZXNNYXAoKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgY29tbWFuZDogQ29tcG9uZW50UmVuZGVyQ29tbWFuZCA9IFtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBuZXN0aW5nTGV2ZWwsXG4gICAgICAgICAgICBkb21Qb3NpdGlvbixcbiAgICAgICAgICAgIGNvbW1hbmRJbmRleCsrLFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgIGlucHV0cyxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgIF07XG5cbiAgICAgICAgICByb290Q29tbWFuZHMucHVzaChjb21tYW5kKTtcblxuICAgICAgICAgIGRvbVBvc2l0aW9uKys7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCB0eXBlID0gUkVOREVSX0NPTU1BTkRfVFlQRS5IVE1MX09QRU47XG4gICAgICAgICAgY29uc3QgdGFnID0gdHJhbnNsYXRlQ29udGVudGZ1bE5vZGVUeXBlVG9IdG1sVGFnKG5vZGUubm9kZVR5cGUpO1xuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgICAgICBjb25zdCBpZCA9ICdlJyArIGVsZW1lbnRJZCsrO1xuXG4gICAgICAgICAgY29uc3QgY29tbWFuZDogSHRtbE9wZW5SZW5kZXJDb21tYW5kID0gW3R5cGUsIG5lc3RpbmdMZXZlbCwgZG9tUG9zaXRpb24sIGNvbW1hbmRJbmRleCsrLCBhdHRyaWJ1dGVzLCB0YWcsIGlkXTtcblxuICAgICAgICAgIHJvb3RDb21tYW5kcy5wdXNoKGNvbW1hbmQpO1xuXG4gICAgICAgICAgY29uc3QgZG9tUG9zaXRpb25BdFRoaXNMZXZlbCA9IGRvbVBvc2l0aW9uO1xuICAgICAgICAgIC8vIE5vcm1hbCBodG1sIGVsZW1lbnRzIGNhbiBoYXZlIGNoaWxkcmVuXG4gICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIGRvbVBvc2l0aW9uID0gMDtcbiAgICAgICAgICAgIG5lc3RpbmdMZXZlbCsrO1xuICAgICAgICAgICAgdHJhdmVyc2UoY2hpbGQsIGNvbW1hbmQpO1xuICAgICAgICAgICAgbmVzdGluZ0xldmVsLS07XG4gICAgICAgICAgICBkb21Qb3NpdGlvbiA9IGRvbVBvc2l0aW9uQXRUaGlzTGV2ZWw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbGFzdENvbW1hbmQgPSByb290Q29tbWFuZHNbcm9vdENvbW1hbmRzLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgaWYgKGxhc3RDb21tYW5kPy5bUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uVFlQRV0gPT09IFJFTkRFUl9DT01NQU5EX1RZUEUuSFRNTF9PUEVOKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgbGFzdCBjb21tYW5kIGlzIGFuIG9wZW4gY29tbWFuZCwgd2UgY2FuIHJlbW92ZSBpdCBzaW5jZSBpdCdzIGVtcHR5XG4gICAgICAgICAgICByb290Q29tbWFuZHMucG9wKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNsb3NlSWQgPSAnZScgKyBlbGVtZW50SWQrKztcblxuICAgICAgICAgICAgY29uc3QgY2xvc2VDb21tYW5kOiBIdG1sQ2xvc2VSZW5kZXJDb21tYW5kID0gW1xuICAgICAgICAgICAgICBSRU5ERVJfQ09NTUFORF9UWVBFLkhUTUxfQ0xPU0UsXG4gICAgICAgICAgICAgIG5lc3RpbmdMZXZlbCxcbiAgICAgICAgICAgICAgZG9tUG9zaXRpb24sXG4gICAgICAgICAgICAgIGNvbW1hbmRJbmRleCsrLFxuICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgIGNsb3NlSWQsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgcm9vdENvbW1hbmRzLnB1c2goY2xvc2VDb21tYW5kKTtcblxuICAgICAgICAgICAgZG9tUG9zaXRpb24rKztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gSU5MSU5FUy5IWVBFUkxJTkspIHtcbiAgICAgICAgICAgIGNvbnN0IHVyaSA9IG5vZGUuZGF0YVsndXJpJ107XG4gICAgICAgICAgICBhdHRyaWJ1dGVzWydocmVmJ10gPSB1cmk7XG5cbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSB0aGlzLl9kb2N1bWVudC5sb2NhdGlvbi5ob3N0O1xuICAgICAgICAgICAgY29uc3QgaXNFeHRlcm5hbCA9ICF1cmkuaW5jbHVkZXMoaG9zdCk7XG5cbiAgICAgICAgICAgIGlmIChpc0V4dGVybmFsKSB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXNbJ3RhcmdldCddID0gJ19ibGFuayc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBub2RlIG9mIHJpY2hUZXh0RGF0YS5jb250ZW50KSB7XG4gICAgICB0cmF2ZXJzZShub2RlLCBudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdENvbW1hbmRzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXhlY0luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnM6IFJlbmRlckluc3RydWN0aW9uW10pIHtcbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgICAgY29uc3QgdHlwZSA9IGluc3RydWN0aW9uW1JFTkRFUl9JTlNUUlVDVElPTl9QT1NJVElPTi5UWVBFXTtcbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBpbnN0cnVjdGlvbltSRU5ERVJfSU5TVFJVQ1RJT05fUE9TSVRJT04uQ09NTUFORF07XG5cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFJFTkRFUl9JTlNUUlVDVElPTl9UWVBFLkNSRUFURTpcbiAgICAgICAgICB0aGlzLl9ydW5DcmVhdGVJbnN0cnVjdGlvbihjb21tYW5kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBSRU5ERVJfSU5TVFJVQ1RJT05fVFlQRS5VUERBVEU6XG4gICAgICAgICAgdGhpcy5fcnVuVXBkYXRlSW5zdHJ1Y3Rpb24oY29tbWFuZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUkVOREVSX0lOU1RSVUNUSU9OX1RZUEUuTU9WRTpcbiAgICAgICAgICB0aGlzLl9ydW5Nb3ZlSW5zdHJ1Y3Rpb24oY29tbWFuZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUkVOREVSX0lOU1RSVUNUSU9OX1RZUEUuREVMRVRFOlxuICAgICAgICAgIHRoaXMuX3J1bkRlbGV0ZUluc3RydWN0aW9uKGNvbW1hbmQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3J1bkNyZWF0ZUluc3RydWN0aW9uKGNvbW1hbmQ6IFJlbmRlckNvbW1hbmQpIHtcbiAgICBjb25zdCBpZCA9IGdldFJlbmRlckNvbW1hbmRJZChjb21tYW5kKTtcbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5fZmluZFBhcmVudChjb21tYW5kKTtcbiAgICBjb25zdCBuZXh0RWxlbWVudCA9IHRoaXMuX2ZpbmRGb2xsb3dpbmdFbGVtZW50KGNvbW1hbmQpO1xuXG4gICAgaWYgKGlzQ29tcG9uZW50UmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tbWFuZFtDT01QT05FTlRfUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uQ09NUE9ORU5UXSk7XG5cbiAgICAgIHRoaXMuX3VwZGF0ZUNvbXBvbmVudElucHV0cyhjb21tYW5kLCBjb21wb25lbnRSZWYpO1xuXG4gICAgICBjb25zdCByb290Tm9kZSA9IHRoaXMuX2dldENvbXBvbmVudFJvb3ROb2RlKGNvbXBvbmVudFJlZik7XG5cbiAgICAgIHRoaXMuX3JlbmRlckluc2VydE9yQXBwZW5kKHJvb3ROb2RlLCBwYXJlbnRFbGVtZW50LCBuZXh0RWxlbWVudCk7XG5cbiAgICAgIHRoaXMuX2V4ZWN1dGVkQ29tbWFuZHNDYWNoZS5zZXQoaWQsIHtcbiAgICAgICAgY29tbWFuZCxcbiAgICAgICAgY29tcG9uZW50UmVmLFxuICAgICAgICBlbGVtZW50OiByb290Tm9kZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNUZXh0UmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgICAgY29uc3QgdGV4dCA9IGNvbW1hbmRbVEVYVF9SRU5ERVJfQ09NTUFORF9QT1NJVElPTi5URVhUXTtcbiAgICAgIGNvbnN0IHRleHROb2RlID0gdGhpcy5fcmVuZGVyZXIuY3JlYXRlVGV4dCh0ZXh0KTtcbiAgICAgIGNvbnN0IHNwYW4gPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZChzcGFuLCB0ZXh0Tm9kZSk7XG5cbiAgICAgIHRoaXMuX3JlbmRlckluc2VydE9yQXBwZW5kKHNwYW4sIHBhcmVudEVsZW1lbnQsIG5leHRFbGVtZW50KTtcblxuICAgICAgdGhpcy5fZXhlY3V0ZWRDb21tYW5kc0NhY2hlLnNldChpZCwge1xuICAgICAgICBjb21tYW5kLFxuICAgICAgICBlbGVtZW50OiBzcGFuLFxuICAgICAgICB0ZXh0Tm9kZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNIdG1sT3BlblJlbmRlckNvbW1hbmQoY29tbWFuZCkpIHtcbiAgICAgIGNvbnN0IHRhZyA9IGNvbW1hbmRbSFRNTF9PUEVOX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLlRBR19OQU1FXTtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBjb21tYW5kW0hUTUxfT1BFTl9SRU5ERVJfQ09NTUFORF9QT1NJVElPTi5BVFRSSUJVVEVTXTtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KHRhZyk7XG5cbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCBrZXksIHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVuZGVySW5zZXJ0T3JBcHBlbmQoZWxlbWVudCwgcGFyZW50RWxlbWVudCwgbmV4dEVsZW1lbnQpO1xuXG4gICAgICB0aGlzLl9leGVjdXRlZENvbW1hbmRzQ2FjaGUuc2V0KGlkLCB7XG4gICAgICAgIGNvbW1hbmQsXG4gICAgICAgIGVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9ydW5VcGRhdGVJbnN0cnVjdGlvbihjb21tYW5kOiBSZW5kZXJDb21tYW5kKSB7XG4gICAgY29uc3QgaWQgPSBnZXRSZW5kZXJDb21tYW5kSWQoY29tbWFuZCk7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5fZXhlY3V0ZWRDb21tYW5kc0NhY2hlLmdldChpZCk7XG5cbiAgICBpZiAoIWNhY2hlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYWNoZWQgY29tbWFuZCBub3QgZm91bmQhJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ29tcG9uZW50UmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgICAgaWYgKCFpc0V4ZWN1dGVkQ29tcG9uZW50Q29tbWFuZENhY2hlSXRlbShjYWNoZWQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FjaGVkIGNvbW1hbmQgaXMgbm90IGEgY29tcG9uZW50IGNvbW1hbmQhJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGNhY2hlZC5jb21wb25lbnRSZWY7XG5cbiAgICAgIGlmICghY29tcG9uZW50UmVmKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcG9uZW50IHJlZiBub3QgZm91bmQhJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3VwZGF0ZUNvbXBvbmVudElucHV0cyhjb21tYW5kLCBjb21wb25lbnRSZWYpO1xuICAgIH1cblxuICAgIHRoaXMuX2V4ZWN1dGVkQ29tbWFuZHNDYWNoZS5zZXQoaWQsIHtcbiAgICAgIC4uLmNhY2hlZCxcbiAgICAgIGNvbW1hbmQ6IGNvbW1hbmQgYXMgYW55LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcnVuTW92ZUluc3RydWN0aW9uKGNvbW1hbmQ6IFJlbmRlckNvbW1hbmQpIHtcbiAgICBjb25zdCBpZCA9IGdldFJlbmRlckNvbW1hbmRJZChjb21tYW5kKTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLl9leGVjdXRlZENvbW1hbmRzQ2FjaGUuZ2V0KGlkKTtcblxuICAgIGlmICghY2FjaGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhY2hlZCBjb21tYW5kIG5vdCBmb3VuZCEnKTtcbiAgICB9XG5cbiAgICBpZiAoaXNDb21wb25lbnRSZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICBpZiAoIWlzRXhlY3V0ZWRDb21wb25lbnRDb21tYW5kQ2FjaGVJdGVtKGNhY2hlZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYWNoZWQgY29tbWFuZCBpcyBub3QgYSBjb21wb25lbnQgY29tbWFuZCEnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gY2FjaGVkLmNvbXBvbmVudFJlZjtcblxuICAgICAgaWYgKCFjb21wb25lbnRSZWYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21wb25lbnQgcmVmIG5vdCBmb3VuZCEnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgcm9vdE5vZGUgPSBjYWNoZWQuZWxlbWVudDtcbiAgICAgIGNvbnN0IG9sZFBhcmVudEVsZW1lbnQgPSBjYWNoZWQuZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDaGlsZChvbGRQYXJlbnRFbGVtZW50LCByb290Tm9kZSk7XG5cbiAgICAgIGNvbnN0IG5ld1BhcmVudEVsZW1lbnQgPSB0aGlzLl9maW5kUGFyZW50KGNvbW1hbmQpO1xuICAgICAgY29uc3QgbmV4dEVsZW1lbnQgPSB0aGlzLl9maW5kRm9sbG93aW5nRWxlbWVudChjb21tYW5kKTtcblxuICAgICAgdGhpcy5fcmVuZGVySW5zZXJ0T3JBcHBlbmQocm9vdE5vZGUsIG5ld1BhcmVudEVsZW1lbnQsIG5leHRFbGVtZW50KTtcblxuICAgICAgdGhpcy5fdXBkYXRlQ29tcG9uZW50SW5wdXRzKGNvbW1hbmQsIGNvbXBvbmVudFJlZik7XG5cbiAgICAgIHRoaXMuX2V4ZWN1dGVkQ29tbWFuZHNDYWNoZS5zZXQoaWQsIHtcbiAgICAgICAgLi4uY2FjaGVkLFxuICAgICAgICBjb21tYW5kOiBjb21tYW5kIGFzIGFueSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3J1bkRlbGV0ZUluc3RydWN0aW9uKGNvbW1hbmQ6IFJlbmRlckNvbW1hbmQpIHtcbiAgICBjb25zdCBpZCA9IGdldFJlbmRlckNvbW1hbmRJZChjb21tYW5kKTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLl9leGVjdXRlZENvbW1hbmRzQ2FjaGUuZ2V0KGlkKTtcblxuICAgIGlmICghY2FjaGVkKSB7XG4gICAgICBpZiAoaXNIdG1sQ2xvc2VSZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYWNoZWQgY29tbWFuZCBub3QgZm91bmQhJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ29tcG9uZW50UmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgICAgaWYgKCFpc0V4ZWN1dGVkQ29tcG9uZW50Q29tbWFuZENhY2hlSXRlbShjYWNoZWQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FjaGVkIGNvbW1hbmQgaXMgbm90IGEgY29tcG9uZW50IGNvbW1hbmQhJyk7XG4gICAgICB9XG5cbiAgICAgIGNhY2hlZC5jb21wb25lbnRSZWY/LmRlc3Ryb3koKTtcbiAgICB9IGVsc2UgaWYgKGlzVGV4dFJlbmRlckNvbW1hbmQoY29tbWFuZCkpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKGNhY2hlZC5lbGVtZW50Py5wYXJlbnRFbGVtZW50LCBjYWNoZWQuZWxlbWVudCk7XG4gICAgfSBlbHNlIGlmIChpc0h0bWxPcGVuUmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQoY2FjaGVkLmVsZW1lbnQ/LnBhcmVudEVsZW1lbnQsIGNhY2hlZC5lbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLl9leGVjdXRlZENvbW1hbmRzQ2FjaGUuZGVsZXRlKGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldENvbXBvbmVudFJvb3ROb2RlKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4pOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNvbXBvbmVudElucHV0cyhjb21tYW5kOiBDb21wb25lbnRSZW5kZXJDb21tYW5kLCBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+KSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29tbWFuZFtDT01QT05FTlRfUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uSU5QVVRTXSkpIHtcbiAgICAgIGlmICghY29tcG9uZW50UmVmLmluc3RhbmNlW2tleV0pIGNvbnRpbnVlO1xuXG4gICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZmluZFBhcmVudChjb21tYW5kOiBSZW5kZXJDb21tYW5kKSB7XG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgbmVzdGluZ0xldmVsID0gY29tbWFuZFtSRU5ERVJfQ09NTUFORF9QT1NJVElPTi5ORVNUSU5HX0xFVkVMXTtcbiAgICBsZXQgcGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAobmVzdGluZ0xldmVsID09PSAwKSB7XG4gICAgICBwYXJlbnRFbGVtZW50ID0gaG9zdEVsZW1lbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJldmVyc2Ugc2VhcmNoIGFsbCByZW5kZXIgY29tbWFuZHMgYmVnaW5uaW5nIGZyb20gdGhlIGN1cnJlbnQgb25lIHVzaW5nIGEgZm9yIGxvb3AuXG4gICAgICAvLyBUaGUgcGFyZW50IGlzIGZvdW5kIHdoZW4gdGhlIGNvbW1hbmQncyBuZXN0aW5nIGxldmVsIGlzdCB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBuZXN0aW5nIGxldmVsIG1pbnVzIDEuXG4gICAgICAvLyBJZiB0aGUgcGFyZW50IGlzIG5vdCBmb3VuZCwgdGhyb3cgYW4gZXJyb3IuXG4gICAgICBjb25zdCBhbGxDb21tYW5kcyA9IHRoaXMucmVuZGVyQ29tbWFuZHMoKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRDb21tYW5kSW5kZXggPSBjb21tYW5kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLklOREVYXTtcblxuICAgICAgbGV0IHBhcmVudENvbW1hbmQ6IFJlbmRlckNvbW1hbmQgfCBudWxsID0gbnVsbDtcblxuICAgICAgZm9yIChsZXQgaSA9IGN1cnJlbnRDb21tYW5kSW5kZXggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBjbWQgPSBhbGxDb21tYW5kc1tpXTtcblxuICAgICAgICBpZiAoIWNtZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tbWFuZCBub3QgZm91bmQhJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY21kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLk5FU1RJTkdfTEVWRUxdID09PSBuZXN0aW5nTGV2ZWwgLSAxKSB7XG4gICAgICAgICAgcGFyZW50Q29tbWFuZCA9IGNtZDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXBhcmVudENvbW1hbmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJlbnQgY29tbWFuZCBub3QgZm91bmQhJyk7XG4gICAgICB9XG5cbiAgICAgIHBhcmVudEVsZW1lbnQgPSB0aGlzLl9leGVjdXRlZENvbW1hbmRzQ2FjaGUuZ2V0KGdldFJlbmRlckNvbW1hbmRJZChwYXJlbnRDb21tYW5kKSk/LmVsZW1lbnQ7XG4gICAgfVxuXG4gICAgaWYgKCFwYXJlbnRFbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcmVudCBlbGVtZW50IG5vdCBmb3VuZCEnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50RWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmRGb2xsb3dpbmdFbGVtZW50KGNvbW1hbmQ6IFJlbmRlckNvbW1hbmQpIHtcbiAgICBjb25zdCBjYWNoZUFycmF5ID0gQXJyYXkuZnJvbSh0aGlzLl9leGVjdXRlZENvbW1hbmRzQ2FjaGUudmFsdWVzKCkpO1xuICAgIGxldCBuZXh0RWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkb21Qb3NpdGlvbiA9IGNvbW1hbmRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uRE9NX1BPU0lUSU9OXTtcbiAgICBjb25zdCBuZXN0aW5nTGV2ZWwgPSBjb21tYW5kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLk5FU1RJTkdfTEVWRUxdO1xuICAgIGNvbnN0IHR5cGUgPSBjb21tYW5kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLlRZUEVdO1xuXG4gICAgLy8gIFRyeSB0byBmaW5kIGFuIGFscmVhZHkgcmVuZGVyZWQgZWxlbWVudCB3aXRoIGEgZG9tUG9zaXRpb24gdGhhdCBpcyBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgZG9tUG9zaXRpb24uIElmIHRoZXJlIGFyZSBtdWx0aXBsZSwgdXNlIHRoZSBvbmUgd2l0aCB0aGUgc21hbGxlc3QgZG9tUG9zaXRpb24uXG4gICAgLy8gSWYgaXQgZG9lcyBub3QgZXhpc3QsIHVzZSAuYXBwZW5kQ2hpbGQgdG8gc2ltcGx5IGFwcGVuZCB0aGUgZWxlbWVudCB0byB0aGUgZW5kIG9mIHRoZSBwYXJlbnQgZWxlbWVudC5cbiAgICAvLyBJZiBpdCBkb2VzIGV4aXN0LCB1c2UgLmluc2VydEJlZm9yZSB0byBpbnNlcnQgdGhlIGVsZW1lbnQgYmVmb3JlIHRoZSBmb3VuZCBlbGVtZW50LlxuICAgIGZvciAoY29uc3QgY2FjaGVkIG9mIGNhY2hlQXJyYXkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgY2FjaGVkLmNvbW1hbmRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uRE9NX1BPU0lUSU9OXSA+IGRvbVBvc2l0aW9uICYmXG4gICAgICAgIGNhY2hlZC5jb21tYW5kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLk5FU1RJTkdfTEVWRUxdID09PSBuZXN0aW5nTGV2ZWwgJiZcbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBlbGVtZW50IGRvZXMgbm90IGZpbmQgaXRzZWxmXG4gICAgICAgIGNhY2hlZC5jb21tYW5kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLlRZUEVdICE9PSB0eXBlXG4gICAgICApIHtcbiAgICAgICAgbmV4dEVsZW1lbnQgPSBjYWNoZWQuZWxlbWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVySW5zZXJ0T3JBcHBlbmQoXG4gICAgbm9kZVRvUmVuZGVyOiBIVE1MRWxlbWVudCxcbiAgICBwYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBuZXh0RWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIGlmIChuZXh0RWxlbWVudCkge1xuICAgICAgdGhpcy5fcmVuZGVyZXIuaW5zZXJ0QmVmb3JlKHBhcmVudEVsZW1lbnQsIG5vZGVUb1JlbmRlciwgbmV4dEVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnRFbGVtZW50LCBub2RlVG9SZW5kZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2RlYnVnVmlzdWFsaXplUmVuZGVyQ29tbWFuZHMoY29tbWFuZHM6IFJlbmRlckNvbW1hbmRbXSkge1xuICAgIGNvbnN0IGRlYnVnID0gY29tbWFuZHMubWFwKChjb21tYW5kKSA9PiB0aGlzLl9zdHJpbmdpZnlSZW5kZXJDb21tYW5kKGNvbW1hbmQpKS5mbGF0KCk7XG5cbiAgICBjb25zdCBwcmV0dGlmaWVkID0gZm9ybWF0SFRNTChkZWJ1Zyk7XG5cbiAgICByZXR1cm4gcHJldHRpZmllZDtcbiAgfVxuXG4gIHByaXZhdGUgX3N0cmluZ2lmeVJlbmRlckNvbW1hbmQoY29tbWFuZDogUmVuZGVyQ29tbWFuZCkge1xuICAgIGNvbnN0IG5lc3RBdHRyID0gYG5lc3Q9XCIke2NvbW1hbmRbUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uTkVTVElOR19MRVZFTF19XCJgO1xuICAgIGNvbnN0IGRvbUF0dHIgPSBgZG9tPVwiJHtjb21tYW5kW1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLkRPTV9QT1NJVElPTl19XCJgO1xuXG4gICAgaWYgKGlzSHRtbE9wZW5SZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICByZXR1cm4gYDwke2NvbW1hbmRbSFRNTF9PUEVOX1JFTkRFUl9DT01NQU5EX1BPU0lUSU9OLlRBR19OQU1FXX0gJHtuZXN0QXR0cn0gJHtkb21BdHRyfT5gO1xuICAgIH0gZWxzZSBpZiAoaXNIdG1sQ2xvc2VSZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICByZXR1cm4gYDwvJHtjb21tYW5kW0hUTUxfQ0xPU0VfUkVOREVSX0NPTU1BTkRfUE9TSVRJT04uVEFHX05BTUVdfSAke25lc3RBdHRyfSAke2RvbUF0dHJ9PmA7XG4gICAgfSBlbHNlIGlmIChpc1RleHRSZW5kZXJDb21tYW5kKGNvbW1hbmQpKSB7XG4gICAgICByZXR1cm4gW2A8c3BhbiAke25lc3RBdHRyfSAke2RvbUF0dHJ9PmAsIGNvbW1hbmRbVEVYVF9SRU5ERVJfQ09NTUFORF9QT1NJVElPTi5URVhUXSwgJzwvc3Bhbj4nXTtcbiAgICB9IGVsc2UgaWYgKGlzQ29tcG9uZW50UmVuZGVyQ29tbWFuZChjb21tYW5kKSkge1xuICAgICAgY29uc3Qgc2VsZWN0b3IgPSBjb21tYW5kW0NPTVBPTkVOVF9SRU5ERVJfQ09NTUFORF9QT1NJVElPTi5DT01QT05FTlRfVFlQRV07XG4gICAgICByZXR1cm4gW2A8JHtzZWxlY3Rvcn0gJHtuZXN0QXR0cn0gJHtkb21BdHRyfT5gLCBgPC8ke3NlbGVjdG9yfT5gXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdVTktOT1dOJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zdHJpbmdpZnlSZW5kZXJJbnN0cnVjdGlvbihpbnN0cnVjdGlvbjogUmVuZGVySW5zdHJ1Y3Rpb24pIHtcbiAgICBjb25zdCB0eXBlID0gaW5zdHJ1Y3Rpb25bUkVOREVSX0lOU1RSVUNUSU9OX1BPU0lUSU9OLlRZUEVdO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRUeXBlID0gT2JqZWN0LmVudHJpZXMoUkVOREVSX0lOU1RSVUNUSU9OX1RZUEUpLmZpbmQoKFssIHZhbHVlXSkgPT4gdmFsdWUgPT09IHR5cGUpPy5bMF07XG5cbiAgICBjb25zdCBjb21tYW5kID0gdGhpcy5fc3RyaW5naWZ5UmVuZGVyQ29tbWFuZChpbnN0cnVjdGlvbltSRU5ERVJfSU5TVFJVQ1RJT05fUE9TSVRJT04uQ09NTUFORF0pO1xuXG4gICAgcmV0dXJuIGAke3RyYW5zbGF0ZWRUeXBlfTogJHtjb21tYW5kfWA7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0SFRNTChodG1sOiBzdHJpbmdbXSkge1xuICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gIGxldCBpbmRlbnQgPSAwO1xuXG4gIGZvciAoY29uc3QgdGFnIG9mIGh0bWwpIHtcbiAgICBpZiAodGFnLnN0YXJ0c1dpdGgoJzwvJykpIHtcbiAgICAgIGluZGVudC0tO1xuICAgIH1cblxuICAgIHJlc3VsdC5wdXNoKCcgJy5yZXBlYXQoaW5kZW50ICogMikgKyB0YWcpO1xuXG4gICAgaWYgKHRhZy5zdGFydHNXaXRoKCc8JykgJiYgIXRhZy5zdGFydHNXaXRoKCc8LycpKSB7XG4gICAgICBpbmRlbnQrKztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LmpvaW4oJ1xcbicpO1xufVxuIl19
|
|
@@ -1,16 +1,33 @@
|
|
|
1
1
|
import { NgClass } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';
|
|
3
|
+
import { isContentfulGqlAsset } from '../../gql';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export class ContentfulVideoComponent {
|
|
5
6
|
constructor() {
|
|
6
7
|
this.asset = input.required();
|
|
7
8
|
this.videoClass = input(null);
|
|
9
|
+
this.data = computed(() => {
|
|
10
|
+
const asset = this.asset();
|
|
11
|
+
if (!asset) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
if (isContentfulGqlAsset(asset)) {
|
|
15
|
+
return {
|
|
16
|
+
url: asset.url,
|
|
17
|
+
contentType: asset.contentType,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
url: asset.fields.file.url,
|
|
22
|
+
contentType: asset.fields.file.contentType,
|
|
23
|
+
};
|
|
24
|
+
});
|
|
8
25
|
}
|
|
9
26
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ContentfulVideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10
27
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: ContentfulVideoComponent, isStandalone: true, selector: "et-contentful-video", inputs: { asset: { classPropertyName: "asset", publicName: "asset", isSignal: true, isRequired: true, transformFunction: null }, videoClass: { classPropertyName: "videoClass", publicName: "videoClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
11
|
-
@if (
|
|
28
|
+
@if (data(); as data) {
|
|
12
29
|
<video [ngClass]="videoClass()" controls>
|
|
13
|
-
<source src="{{ data.
|
|
30
|
+
<source src="{{ data.url }}" type="{{ data.contentType }}" />
|
|
14
31
|
</video>
|
|
15
32
|
}
|
|
16
33
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
@@ -20,9 +37,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
20
37
|
args: [{
|
|
21
38
|
selector: 'et-contentful-video',
|
|
22
39
|
template: `
|
|
23
|
-
@if (
|
|
40
|
+
@if (data(); as data) {
|
|
24
41
|
<video [ngClass]="videoClass()" controls>
|
|
25
|
-
<source src="{{ data.
|
|
42
|
+
<source src="{{ data.url }}" type="{{ data.contentType }}" />
|
|
26
43
|
</video>
|
|
27
44
|
}
|
|
28
45
|
`,
|
|
@@ -32,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
32
49
|
imports: [NgClass],
|
|
33
50
|
}]
|
|
34
51
|
}] });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGZ1bC12aWRlby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRlbnRmdWwvc3JjL2xpYi9jb21wb25lbnRzL3ZpZGVvL2NvbnRlbnRmdWwtdmlkZW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkcsT0FBTyxFQUFzQixvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFpQnJFLE1BQU0sT0FBTyx3QkFBd0I7SUFkckM7UUFlRSxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBK0QsQ0FBQztRQUN0RixlQUFVLEdBQUcsS0FBSyxDQUFjLElBQUksQ0FBQyxDQUFDO1FBRXRDLFNBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUUzQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxPQUFPO29CQUNMLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztvQkFDZCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7aUJBQy9CLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTztnQkFDTCxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFDMUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVc7YUFDM0MsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0tBQ0o7OEdBdkJZLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHlWQVp6Qjs7Ozs7O0dBTVQsNERBSVMsT0FBTzs7MkZBRU4sd0JBQXdCO2tCQWRwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRTs7Ozs7O0dBTVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDbGFzc1R5cGUgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IENvbnRlbnRmdWxHcWxBc3NldCwgaXNDb250ZW50ZnVsR3FsQXNzZXQgfSBmcm9tICcuLi8uLi9ncWwnO1xuaW1wb3J0IHsgQ29udGVudGZ1bFJlc3RBc3NldCB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtY29udGVudGZ1bC12aWRlbycsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChkYXRhKCk7IGFzIGRhdGEpIHtcbiAgICAgIDx2aWRlbyBbbmdDbGFzc109XCJ2aWRlb0NsYXNzKClcIiBjb250cm9scz5cbiAgICAgICAgPHNvdXJjZSBzcmM9XCJ7eyBkYXRhLnVybCB9fVwiIHR5cGU9XCJ7eyBkYXRhLmNvbnRlbnRUeXBlIH19XCIgLz5cbiAgICAgIDwvdmlkZW8+XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3NdLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50ZnVsVmlkZW9Db21wb25lbnQge1xuICBhc3NldCA9IGlucHV0LnJlcXVpcmVkPENvbnRlbnRmdWxSZXN0QXNzZXQgfCBDb250ZW50ZnVsR3FsQXNzZXQgfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuICB2aWRlb0NsYXNzID0gaW5wdXQ8TmdDbGFzc1R5cGU+KG51bGwpO1xuXG4gIGRhdGEgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYXNzZXQgPSB0aGlzLmFzc2V0KCk7XG5cbiAgICBpZiAoIWFzc2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoaXNDb250ZW50ZnVsR3FsQXNzZXQoYXNzZXQpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB1cmw6IGFzc2V0LnVybCxcbiAgICAgICAgY29udGVudFR5cGU6IGFzc2V0LmNvbnRlbnRUeXBlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXJsOiBhc3NldC5maWVsZHMuZmlsZS51cmwsXG4gICAgICBjb250ZW50VHlwZTogYXNzZXQuZmllbGRzLmZpbGUuY29udGVudFR5cGUsXG4gICAgfTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -13,4 +13,8 @@ export const GQL_FRAGMENT_CONTENTFUL_ASSET = gql `
|
|
|
13
13
|
size
|
|
14
14
|
}
|
|
15
15
|
`;
|
|
16
|
-
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
|
+
export const isContentfulGqlAsset = (asset) => {
|
|
18
|
+
return asset?.sys?.id && asset?.url && typeof asset?.size === 'number';
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuZnJhZ21lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb250ZW50ZnVsL3NyYy9saWIvZ3FsL2Fzc2V0LmZyYWdtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7O0NBYS9DLENBQUM7QUFlRiw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFVLEVBQStCLEVBQUU7SUFDOUUsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxLQUFLLEVBQUUsR0FBRyxJQUFJLE9BQU8sS0FBSyxFQUFFLElBQUksS0FBSyxRQUFRLENBQUM7QUFDekUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ3FsIH0gZnJvbSAnQGV0aGxldGUvcXVlcnknO1xuXG5leHBvcnQgY29uc3QgR1FMX0ZSQUdNRU5UX0NPTlRFTlRGVUxfQVNTRVQgPSBncWxgXG4gIGZyYWdtZW50IEFzc2V0RGF0YSBvbiBBc3NldCB7XG4gICAgc3lzIHtcbiAgICAgIGlkXG4gICAgfVxuICAgIHVybFxuICAgIHRpdGxlXG4gICAgd2lkdGhcbiAgICBoZWlnaHRcbiAgICBkZXNjcmlwdGlvblxuICAgIGNvbnRlbnRUeXBlXG4gICAgc2l6ZVxuICB9XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxHcWxBc3NldCB7XG4gIHN5czoge1xuICAgIGlkOiBzdHJpbmc7XG4gIH07XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgd2lkdGg6IG51bWJlciB8IG51bGw7XG4gIGhlaWdodDogbnVtYmVyIHwgbnVsbDtcbiAgc2l6ZTogbnVtYmVyO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNvbnN0IGlzQ29udGVudGZ1bEdxbEFzc2V0ID0gKGFzc2V0OiBhbnkpOiBhc3NldCBpcyBDb250ZW50ZnVsR3FsQXNzZXQgPT4ge1xuICByZXR1cm4gYXNzZXQ/LnN5cz8uaWQgJiYgYXNzZXQ/LnVybCAmJiB0eXBlb2YgYXNzZXQ/LnNpemUgPT09ICdudW1iZXInO1xufTtcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGZ1bC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGVudGZ1bC9zcmMvbGliL3R5cGVzL2NvbnRlbnRmdWwudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IElucHV0U2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCbG9jaywgTm9kZURhdGEgfSBmcm9tICdAY29udGVudGZ1bC9yaWNoLXRleHQtdHlwZXMnO1xuaW1wb3J0IHsgQ29udGVudGZ1bEluY2x1ZGVNYXAgfSBmcm9tICcuLi9jb21wb25lbnRzL3JpY2gtdGV4dC1yZW5kZXJlcic7XG5pbXBvcnQgeyBDb250ZW50ZnVsR3FsQXNzZXQgfSBmcm9tICcuLi9ncWwnO1xuXG5leHBvcnQgdHlwZSBDb250ZW50ZnVsSW1hZ2VSZXNpemVCZWhhdmlvciA9ICdwYWQnIHwgJ2Nyb3AnIHwgJ2ZpbGwnIHwgJ3NjYWxlJyB8ICd0aHVtYicgfCAnZml0JztcbmV4cG9ydCB0eXBlIENvbnRlbnRmdWxJbWFnZUZvY3VzQXJlYSA9XG4gIHwgJ3RvcCdcbiAgfCAnYm90dG9tJ1xuICB8ICdsZWZ0J1xuICB8ICdyaWdodCdcbiAgfCAnY2VudGVyJ1xuICB8ICd0b3BfbGVmdCdcbiAgfCAndG9wX3JpZ2h0J1xuICB8ICdib3R0b21fbGVmdCdcbiAgfCAnYm90dG9tX3JpZ2h0J1xuICB8ICdmYWNlJ1xuICB8ICdmYWNlcyc7XG5cbnR5cGUgQ29tcG9uZW50TGlrZVdpdGhBc3NldCA9IENvbXBvbmVudFR5cGU8e1xuICBhc3NldDogSW5wdXRTaWduYWw8Q29udGVudGZ1bFJlc3RBc3NldCB8IENvbnRlbnRmdWxHcWxBc3NldCB8IG51bGwgfCB1bmRlZmluZWQ+O1xufT47XG50eXBlIENvbXBvbmVudExpa2VXaXRoQ29udGVudGZ1bFJlbmRlcmVySW5wdXRzID0gQ29tcG9uZW50VHlwZTx7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGZpZWxkcz86IElucHV0U2lnbmFsPGFueT47XG5cbiAgaW5jbHVkZXM/OiBJbnB1dFNpZ25hbDxDb250ZW50ZnVsSW5jbHVkZU1hcD47XG5cbiAgbWV0YWRhdGE/OiBJbnB1dFNpZ25hbDxDb250ZW50ZnVsTWV0YWRhdGE+O1xuXG4gIHN5cz86IElucHV0U2lnbmFsPENvbnRlbnRmdWxTeXM+O1xufT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bEFzc2V0Q29tcG9uZW50cyB7XG4gIGZpbGU6IENvbXBvbmVudExpa2VXaXRoQXNzZXQ7XG4gIGltYWdlOiBDb21wb25lbnRMaWtlV2l0aEFzc2V0O1xuICB2aWRlbzogQ29tcG9uZW50TGlrZVdpdGhBc3NldDtcbiAgYXVkaW86IENvbXBvbmVudExpa2VXaXRoQXNzZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bENvbmZpZyB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IGNvbXBvbmVudHMgZm9yIHJlbmRlcmluZyBjb250ZW50ZnVsIGFzc2V0c1xuICAgKi9cbiAgY29tcG9uZW50czogQ29udGVudGZ1bEFzc2V0Q29tcG9uZW50cztcblxuICAvKipcbiAgICogQ29tcG9uZW50IGZvciByZW5kZXJpbmcgZW1iZWRkZWQgZW50cmllc1xuICAgKi9cbiAgY3VzdG9tQ29tcG9uZW50czogUmVjb3JkPHN0cmluZywgQ29tcG9uZW50TGlrZVdpdGhDb250ZW50ZnVsUmVuZGVyZXJJbnB1dHM+O1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBjb250ZW50ZnVsIHJpY2ggdGV4dCByZW5kZXJlciBzaG91bGQgcmVuZGVyIHRoZSBjb250ZW50ZnVsIHJpY2ggdGV4dCB3aXRoIHRhaWx3aW5kIGNzcyBjbGFzc2VzXG4gICAqL1xuICB1c2VUYWlsd2luZENsYXNzZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIGNvbnRlbnRmdWwgaW1hZ2UgYXBpXG4gICAqL1xuICBpbWFnZU9wdGlvbnM6IHtcbiAgICAvKipcbiAgICAgKiBTb3VyY2Ugc2V0IHNpemVzLiBFZy5cbiAgICAgKiAtIGBcIjQwMFwiYCAtIDQwMHB4IHdpZHRoXG4gICAgICogLSBgXCI0MDB4MzAwXCJgIC0gNDAwcHggd2lkdGggYW5kIDMwMHB4IGhlaWdodFxuICAgICAqIC0gYFwiNDAwd1wiYCAtIDQwMHB4IHdpZHRoXG4gICAgICogLSBgXCI0MDBoXCJgIC0gNDAwcHggaGVpZ2h0XG4gICAgICogLSBgXCI0MDB3eDMwMGhcImAgLSA0MDBweCB3aWR0aCBhbmQgMzAwcHggaGVpZ2h0XG4gICAgICoqL1xuICAgIHNyY3NldFNpemVzOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIFNpemVzIGZvciB0aGUgaW1hZ2UuIEVnLlxuICAgICAqICAtIGBcIjEwMHZ3XCJgIC0gMTAwJSBvZiB0aGUgdmlld3BvcnQgd2lkdGhcbiAgICAgKiAgLSBgXCI1MHZ3XCJgIC0gNTAlIG9mIHRoZSB2aWV3cG9ydCB3aWR0aFxuICAgICAqICAtIGAobWluLXdpZHRoOiAzMGVtKSAzMGVtXCJgIC0gMzBlbSBpZiB0aGUgdmlld3BvcnQgaXMgYXQgbGVhc3QgMzBlbSB3aWRlXG4gICAgICovXG4gICAgc2l6ZXM6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGltYWdlIGluIGhleC4gRWcuIGBcIjAwMDAwMFwiYFxuICAgICAqL1xuICAgIGJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgbnVsbDtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGVudGZ1bExpbmtUeXBlID0gJ1NwYWNlJyB8ICdDb250ZW50VHlwZScgfCAnRW52aXJvbm1lbnQnIHwgJ0VudHJ5JyB8ICdBc3NldCcgfCAnVGFnJztcbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bExpbms8VCBleHRlbmRzIENvbnRlbnRmdWxMaW5rVHlwZT4ge1xuICB0eXBlOiAnTGluayc7XG4gIGxpbmtUeXBlOiBUO1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBDb250ZW50ZnVsU3BhY2VMaW5rID0gQ29udGVudGZ1bExpbms8J1NwYWNlJz47XG5leHBvcnQgdHlwZSBDb250ZW50ZnVsRW52aXJvbm1lbnRMaW5rID0gQ29udGVudGZ1bExpbms8J0Vudmlyb25tZW50Jz47XG5leHBvcnQgdHlwZSBDb250ZW50ZnVsQ29udGVudFR5cGVMaW5rID0gQ29udGVudGZ1bExpbms8J0NvbnRlbnRUeXBlJz47XG5leHBvcnQgdHlwZSBDb250ZW50ZnVsRW50cnlMaW5rID0gQ29udGVudGZ1bExpbms8J0VudHJ5Jz47XG5leHBvcnQgdHlwZSBDb250ZW50ZnVsQXNzZXRMaW5rID0gQ29udGVudGZ1bExpbms8J0Fzc2V0Jz47XG5leHBvcnQgdHlwZSBDb250ZW50ZnVsVGFnTGluayA9IENvbnRlbnRmdWxMaW5rPCdUYWcnPjtcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsVGFnTGlua0l0ZW0ge1xuICBzeXM6IENvbnRlbnRmdWxUYWdMaW5rO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxFbnRyeUxpbmtJdGVtIHtcbiAgc3lzOiBDb250ZW50ZnVsRW50cnlMaW5rO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxBc3NldExpbmtJdGVtIHtcbiAgc3lzOiBDb250ZW50ZnVsQXNzZXRMaW5rO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxNZXRhZGF0YSB7XG4gIHRhZ3M6IENvbnRlbnRmdWxUYWdMaW5rSXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxTeXMge1xuICB0eXBlOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbiAgbG9jYWxlOiBzdHJpbmc7XG4gIHJldmlzaW9uPzogbnVtYmVyO1xuICBzcGFjZT86IHtcbiAgICBzeXM6IENvbnRlbnRmdWxTcGFjZUxpbms7XG4gIH07XG4gIGVudmlyb25tZW50Pzoge1xuICAgIHN5czogQ29udGVudGZ1bEVudmlyb25tZW50TGluaztcbiAgfTtcbiAgY29udGVudFR5cGU6IHtcbiAgICBzeXM6IENvbnRlbnRmdWxDb250ZW50VHlwZUxpbms7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bEFzc2V0SW1hZ2VEYXRhIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bEFzc2V0RmlsZURhdGEge1xuICB1cmw6IHN0cmluZztcbiAgZGV0YWlsczoge1xuICAgIHNpemU6IG51bWJlcjtcbiAgICBpbWFnZT86IENvbnRlbnRmdWxBc3NldEltYWdlRGF0YTtcbiAgfTtcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgY29udGVudFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsUmVzdEFzc2V0IHtcbiAgc3lzOiBDb250ZW50ZnVsU3lzO1xuICBmaWVsZHM6IHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgZmlsZTogQ29udGVudGZ1bEFzc2V0RmlsZURhdGE7XG4gIH07XG4gIG1ldGFkYXRhOiBDb250ZW50ZnVsTWV0YWRhdGE7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxFbnRyeTxUID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4ge1xuICBzeXM6IENvbnRlbnRmdWxTeXM7XG4gIGZpZWxkczogVDtcbiAgbWV0YWRhdGE6IENvbnRlbnRmdWxNZXRhZGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsQ29sbGVjdGlvbiB7XG4gIGluY2x1ZGVzOiB7XG4gICAgQXNzZXQ6IENvbnRlbnRmdWxSZXN0QXNzZXRbXTtcbiAgICBFbnRyeTogQ29udGVudGZ1bEVudHJ5W107XG4gIH07XG4gIGl0ZW1zOiBDb250ZW50ZnVsRW50cnlbXTtcbiAgbGltaXQ6IG51bWJlcjtcbiAgc2tpcDogbnVtYmVyO1xuICB0b3RhbDogbnVtYmVyO1xuICBzeXM6IHtcbiAgICB0eXBlOiAnQXJyYXknO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJpY2hUZXh0UmVzcG9uc2Uge1xuICBub2RlVHlwZTogJ2RvY3VtZW50JztcbiAgZGF0YTogTm9kZURhdGE7XG4gIGNvbnRlbnQ6IEJsb2NrW107XG59XG4iXX0=
|