UNPKG

kipon-xrmservice

Version:

Dynamics 365 CE web api wrapper for angular, making life easier when building angular based web resources

147 lines 28.5 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; const KiponXrmLOCAL_getFormType = "KiponXrmServiceLOCAL_getFormType"; const KiponXrmLOCAL_formentityr = "KiponXrmServiceLOCAL_formentityr"; const KiponXrmLOCAL_context = "KiponXrmServiceLOCAL_context"; export class XrmFormKey { } export class XrmContextInstance { constructor(ctx) { this.apiurl = '/api/data/v9.0/'; this.clientUrl = ctx.getClientUrl(); this.queryStringParameters = ctx.getQueryStringParameters(); this.version = ctx.getVersion(); this.userName = ctx.getUserName(); this.userId = ctx.getUserId(); } getClientUrl() { return this.clientUrl; } getQueryStringParameters() { return this.queryStringParameters; } getVersion() { return this.version; } getUserName() { return this.userName; } getUserId() { return this.userId; } $devClientUrl() { return this.clientUrl + this.apiurl; ; } } export class XrmFormService { constructor() { } getContext() { if (window[KiponXrmLOCAL_context]) { return window[KiponXrmLOCAL_context]; } if (typeof window["GetGlobalContext"] != "undefined") { window[KiponXrmLOCAL_context] = new XrmContextInstance(window["GetGlobalContext"]()); return window[KiponXrmLOCAL_context]; } if (window.parent && window.parent[KiponXrmLOCAL_context]) { window[KiponXrmLOCAL_context] = new XrmContextInstance(window.parent[KiponXrmLOCAL_context]); return window[KiponXrmLOCAL_context]; } if (window.opener && window.opener[KiponXrmLOCAL_context]) { window[KiponXrmLOCAL_context] = new XrmContextInstance(window.opener[KiponXrmLOCAL_context]); return window[KiponXrmLOCAL_context]; } if (window["Xrm"] && window["Xrm"]["Page"] && window["Xrm"]["Page"]["context"]) { window[KiponXrmLOCAL_context] = new XrmContextInstance(window["Xrm"]["Page"]["context"]); return window[KiponXrmLOCAL_context]; } if (window.parent && window.parent["Xrm"] && window.parent["Xrm"]["Page"] && window.parent["Xrm"]["Page"]["context"]) { window[KiponXrmLOCAL_context] = new XrmContextInstance(window.parent["Xrm"]["Page"]["context"]); return window[KiponXrmLOCAL_context]; } if (window.opener && window.opener["Xrm"] && window.opener["Xrm"]["Page"] && window.opener["Xrm"]["Page"]["context"]) { window[KiponXrmLOCAL_context] = new XrmContextInstance(window.opener["Xrm"]["Page"]["context"]); return window[KiponXrmLOCAL_context]; } return null; } getFormType(clear = false) { if (!clear && window[KiponXrmLOCAL_getFormType]) delete window[KiponXrmLOCAL_getFormType]; if (window[KiponXrmLOCAL_getFormType]) { return window[KiponXrmLOCAL_getFormType]; } if (!clear && window.parent && window.parent[KiponXrmLOCAL_getFormType]) { window[KiponXrmLOCAL_getFormType] = window.parent[KiponXrmLOCAL_getFormType]; return window[KiponXrmLOCAL_getFormType]; } if (!clear && window.opener && window.opener[KiponXrmLOCAL_getFormType]) { window[KiponXrmLOCAL_getFormType] = window.opener[KiponXrmLOCAL_getFormType]; return window[KiponXrmLOCAL_getFormType]; } if (window["Xrm"] && window["Xrm"]["Page"] && window["Xrm"]["Page"]["ui"] && window["Xrm"]["Page"]["ui"]["getFormType"]) { window[KiponXrmLOCAL_getFormType] = window["Xrm"]["Page"]["ui"]["getFormType"](); return window[KiponXrmLOCAL_getFormType]; } if (window.parent && window.parent["Xrm"] && window.parent["Xrm"]["Page"] && window.parent["Xrm"]["Page"]["ui"] && window.parent["Xrm"]["Page"]["ui"]["getFormType"]) { window[KiponXrmLOCAL_getFormType] = window.parent["Xrm"]["Page"]["ui"]["getFormType"](); return window[KiponXrmLOCAL_getFormType]; } if (window.opener && window.opener["Xrm"] && window.opener["Xrm"]["Page"] && window.opener["Xrm"]["Page"]["ui"] && window.opener["Xrm"]["Page"]["ui"]["getFormType"]) { window[KiponXrmLOCAL_getFormType] = window.opener["Xrm"]["Page"]["ui"]["getFormType"](); return window[KiponXrmLOCAL_getFormType]; } return null; } getFormKey(id, type, clear = false) { if (typeof id != 'undefined' && id != null && id != '' && typeof type != 'undefined' && type != null && type != '') { let result = new XrmFormKey(); result.id = id; result.type = type; window[KiponXrmLOCAL_formentityr] = result; return result; } if (clear && window[KiponXrmLOCAL_formentityr]) delete window[KiponXrmLOCAL_formentityr]; if (window[KiponXrmLOCAL_formentityr]) { return window[KiponXrmLOCAL_formentityr]; } if (!clear && window.parent && window.parent[KiponXrmLOCAL_formentityr]) { window[KiponXrmLOCAL_formentityr] = window.parent[KiponXrmLOCAL_formentityr]; return window[KiponXrmLOCAL_formentityr]; } if (!clear && window.opener && window.opener[KiponXrmLOCAL_formentityr]) { window[KiponXrmLOCAL_formentityr] = window.opener[KiponXrmLOCAL_formentityr]; return window[KiponXrmLOCAL_formentityr]; } if (window["Xrm"] && window["Xrm"]["Page"] && window["Xrm"]["Page"]["data"] && window["Xrm"]["Page"]["data"]["entity"]) { var result = new XrmFormKey(); result.id = window["Xrm"]["Page"]["data"]["entity"]["getId"](); result.type = window["Xrm"]["Page"]["data"]["entity"]["getEntityName"](); window[KiponXrmLOCAL_formentityr] = result; return window[KiponXrmLOCAL_formentityr]; } if (window.parent && window.parent["Xrm"] && window.parent["Xrm"]["Page"] && window.parent["Xrm"]["Page"]["data"] && window.parent["Xrm"]["Page"]["data"]["entity"]) { var result = new XrmFormKey(); result.id = window.parent["Xrm"]["Page"]["data"]["entity"]["getId"](); result.type = window.parent["Xrm"]["Page"]["data"]["entity"]["getEntityName"](); window[KiponXrmLOCAL_formentityr] = result; return window[KiponXrmLOCAL_formentityr]; } if (window.opener && window.opener["Xrm"] && window.opener["Xrm"]["Page"] && window.opener["Xrm"]["Page"]["data"] && window.opener["Xrm"]["Page"]["data"]["entity"]) { var result = new XrmFormKey(); result.id = window.opener["Xrm"]["Page"]["data"]["entity"]["getId"](); result.type = window.opener["Xrm"]["Page"]["data"]["entity"]["getEntityName"](); window[KiponXrmLOCAL_formentityr] = result; return window[KiponXrmLOCAL_formentityr]; } return null; } } XrmFormService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: XrmFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); XrmFormService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: XrmFormService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: XrmFormService, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHJtZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMva2lwb24teHJtc2VydmljZS9zcmMvbGliL3hybWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUFNLHlCQUF5QixHQUFHLGtDQUFrQyxDQUFDO0FBQ3JFLE1BQU0seUJBQXlCLEdBQUcsa0NBQWtDLENBQUM7QUFDckUsTUFBTSxxQkFBcUIsR0FBRyw4QkFBOEIsQ0FBQztBQVk3RCxNQUFNLE9BQU8sVUFBVTtDQUd0QjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFRN0IsWUFBWSxHQUFlO1FBRm5CLFdBQU0sR0FBVyxpQkFBaUIsQ0FBQztRQUd6QyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsR0FBRyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDNUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFB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ZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUVoRixNQUFNLENBQUMseUJBQXlCLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDM0MsT0FBTyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUMxQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7MkdBcklVLGNBQWM7K0dBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuY29uc3QgS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZSA9IFwiS2lwb25Ycm1TZXJ2aWNlTE9DQUxfZ2V0Rm9ybVR5cGVcIjtcclxuY29uc3QgS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5ciA9IFwiS2lwb25Ycm1TZXJ2aWNlTE9DQUxfZm9ybWVudGl0eXJcIjtcclxuY29uc3QgS2lwb25Ycm1MT0NBTF9jb250ZXh0ID0gXCJLaXBvblhybVNlcnZpY2VMT0NBTF9jb250ZXh0XCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhybUNvbnRleHQge1xyXG4gIGdldENsaWVudFVybCgpOiBzdHJpbmc7XHJcbiAgZ2V0UXVlcnlTdHJpbmdQYXJhbWV0ZXJzKCk6IGFueTtcclxuICBnZXRWZXJzaW9uKCk6IHN0cmluZztcclxuICBnZXRVc2VyTmFtZSgpOiBzdHJpbmc7XHJcbiAgZ2V0VXNlcklkKCk6IHN0cmluZztcclxuICAkZGV2Q2xpZW50VXJsKCk6IHN0cmluZztcclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBYcm1Gb3JtS2V5IHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFhybUNvbnRleHRJbnN0YW5jZSBpbXBsZW1lbnRzIFhybUNvbnRleHQge1xyXG4gIHByaXZhdGUgY2xpZW50VXJsOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBxdWVyeVN0cmluZ1BhcmFtZXRlcnM6IGFueTtcclxuICBwcml2YXRlIHZlcnNpb246IHN0cmluZztcclxuICBwcml2YXRlIHVzZXJOYW1lOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB1c2VySWQ6IHN0cmluZztcclxuICBwcml2YXRlIGFwaXVybDogc3RyaW5nID0gJy9hcGkvZGF0YS92OS4wLyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGN0eDogWHJtQ29udGV4dCkge1xyXG4gICAgdGhpcy5jbGllbnRVcmwgPSBjdHguZ2V0Q2xpZW50VXJsKCk7XHJcbiAgICB0aGlzLnF1ZXJ5U3RyaW5nUGFyYW1ldGVycyA9IGN0eC5nZXRRdWVyeVN0cmluZ1BhcmFtZXRlcnMoKTtcclxuICAgIHRoaXMudmVyc2lvbiA9IGN0eC5nZXRWZXJzaW9uKCk7XHJcbiAgICB0aGlzLnVzZXJOYW1lID0gY3R4LmdldFVzZXJOYW1lKCk7XHJcbiAgICB0aGlzLnVzZXJJZCA9IGN0eC5nZXRVc2VySWQoKTtcclxuICB9IFxyXG5cclxuICBnZXRDbGllbnRVcmwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNsaWVudFVybDtcclxuICB9XHJcblxyXG4gIGdldFF1ZXJ5U3RyaW5nUGFyYW1ldGVycygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMucXVlcnlTdHJpbmdQYXJhbWV0ZXJzO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmVyc2lvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudmVyc2lvbjtcclxuICB9XHJcblxyXG4gIGdldFVzZXJOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyTmFtZTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlcklkO1xyXG4gIH1cclxuICAkZGV2Q2xpZW50VXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnRVcmwgKyB0aGlzLmFwaXVybDs7XHJcbiAgfVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBYcm1Gb3JtU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgZ2V0Q29udGV4dCgpOiBYcm1Db250ZXh0IHtcclxuICAgIGlmICh3aW5kb3dbS2lwb25Ycm1MT0NBTF9jb250ZXh0XSkge1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3dbXCJHZXRHbG9iYWxDb250ZXh0XCJdICE9IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF0gPSAgbmV3IFhybUNvbnRleHRJbnN0YW5jZSh3aW5kb3dbXCJHZXRHbG9iYWxDb250ZXh0XCJdKCkpO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudFtLaXBvblhybUxPQ0FMX2NvbnRleHRdKSB7XHJcbiAgICAgIHdpbmRvd1tLaXBvblhybUxPQ0FMX2NvbnRleHRdID0gbmV3IFhybUNvbnRleHRJbnN0YW5jZSh3aW5kb3cucGFyZW50W0tpcG9uWHJtTE9DQUxfY29udGV4dF0pO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5vcGVuZXIgJiYgd2luZG93Lm9wZW5lcltLaXBvblhybUxPQ0FMX2NvbnRleHRdKSB7XHJcbiAgICAgIHdpbmRvd1tLaXBvblhybUxPQ0FMX2NvbnRleHRdID0gbmV3IFhybUNvbnRleHRJbnN0YW5jZSh3aW5kb3cub3BlbmVyW0tpcG9uWHJtTE9DQUxfY29udGV4dF0pO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvd1tcIlhybVwiXSAmJiB3aW5kb3dbXCJYcm1cIl1bXCJQYWdlXCJdICYmIHdpbmRvd1tcIlhybVwiXVtcIlBhZ2VcIl1bXCJjb250ZXh0XCJdKSB7XHJcbiAgICAgIHdpbmRvd1tLaXBvblhybUxPQ0FMX2NvbnRleHRdID0gbmV3IFhybUNvbnRleHRJbnN0YW5jZSh3aW5kb3dbXCJYcm1cIl1bXCJQYWdlXCJdW1wiY29udGV4dFwiXSk7XHJcbiAgICAgIHJldHVybiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9jb250ZXh0XTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAod2luZG93LnBhcmVudCAmJiB3aW5kb3cucGFyZW50W1wiWHJtXCJdICYmIHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdICYmIHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdW1wiY29udGV4dFwiXSkge1xyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9jb250ZXh0XSA9IG5ldyBYcm1Db250ZXh0SW5zdGFuY2Uod2luZG93LnBhcmVudFtcIlhybVwiXVtcIlBhZ2VcIl1bXCJjb250ZXh0XCJdKTtcclxuICAgICAgcmV0dXJuIHdpbmRvd1tLaXBvblhybUxPQ0FMX2NvbnRleHRdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cub3BlbmVyICYmIHdpbmRvdy5vcGVuZXJbXCJYcm1cIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl1bXCJjb250ZXh0XCJdKSB7XHJcbiAgICAgIHdpbmRvd1tLaXBvblhybUxPQ0FMX2NvbnRleHRdID0gbmV3IFhybUNvbnRleHRJbnN0YW5jZSh3aW5kb3cub3BlbmVyW1wiWHJtXCJdW1wiUGFnZVwiXVtcImNvbnRleHRcIl0pO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIFwiWHJtXCIsIFwiUGFnZVwiLCBcInVpXCIsIFwiZ2V0Rm9ybVR5cGVcIlxyXG5cclxuXHJcbiAgZ2V0Rm9ybVR5cGUoKTtcclxuICBnZXRGb3JtVHlwZShjbGVhcjogYm9vbGVhbik7XHJcbiAgZ2V0Rm9ybVR5cGUoY2xlYXI6IGJvb2xlYW4gPSBmYWxzZSk6IG51bWJlciB7XHJcblxyXG4gICAgaWYgKCFjbGVhciAmJiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV0pIGRlbGV0ZSB3aW5kb3dbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV07XHJcbiAgICBpZiAod2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdKSB7XHJcbiAgICAgIHJldHVybiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFjbGVhciAmJiB3aW5kb3cucGFyZW50ICYmIHdpbmRvdy5wYXJlbnRbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV0pIHtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdID0gd2luZG93LnBhcmVudFtLaXBvblhybUxPQ0FMX2dldEZvcm1UeXBlXTtcclxuICAgICAgcmV0dXJuIHdpbmRvd1tLaXBvblhybUxPQ0FMX2dldEZvcm1UeXBlXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNsZWFyICYmIHdpbmRvdy5vcGVuZXIgJiYgd2luZG93Lm9wZW5lcltLaXBvblhybUxPQ0FMX2dldEZvcm1UeXBlXSkge1xyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV0gPSB3aW5kb3cub3BlbmVyW0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3dbXCJYcm1cIl0gJiYgd2luZG93W1wiWHJtXCJdW1wiUGFnZVwiXSAmJiB3aW5kb3dbXCJYcm1cIl1bXCJQYWdlXCJdW1widWlcIl0gJiYgd2luZG93W1wiWHJtXCJdW1wiUGFnZVwiXVtcInVpXCJdW1wiZ2V0Rm9ybVR5cGVcIl0pIHtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdID0gd2luZG93W1wiWHJtXCJdW1wiUGFnZVwiXVtcInVpXCJdW1wiZ2V0Rm9ybVR5cGVcIl0oKTtcclxuICAgICAgcmV0dXJuIHdpbmRvd1tLaXBvblhybUxPQ0FMX2dldEZvcm1UeXBlXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAod2luZG93LnBhcmVudCAmJiB3aW5kb3cucGFyZW50W1wiWHJtXCJdICYmIHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdICYmIHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdW1widWlcIl0gJiYgd2luZG93LnBhcmVudFtcIlhybVwiXVtcIlBhZ2VcIl1bXCJ1aVwiXVtcImdldEZvcm1UeXBlXCJdKSB7XHJcbiAgICAgIHdpbmRvd1tLaXBvblhybUxPQ0FMX2dldEZvcm1UeXBlXSA9IHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdW1widWlcIl1bXCJnZXRGb3JtVHlwZVwiXSgpO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cub3BlbmVyICYmIHdpbmRvdy5vcGVuZXJbXCJYcm1cIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl1bXCJ1aVwiXSAmJiB3aW5kb3cub3BlbmVyW1wiWHJtXCJdW1wiUGFnZVwiXVtcInVpXCJdW1wiZ2V0Rm9ybVR5cGVcIl0pIHtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdID0gd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl1bXCJ1aVwiXVtcImdldEZvcm1UeXBlXCJdKCk7XHJcbiAgICAgIHJldHVybiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBcIlhybVwiLCBcIlBhZ2VcIiwgXCJkYXRhXCIsIFwiZW50aXR5XCJcclxuICBnZXRGb3JtS2V5KGlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IFhybUZvcm1LZXk7XHJcbiAgZ2V0Rm9ybUtleShpZDogc3RyaW5nLCB0eXBlOiBzdHJpbmcsIGNsZWFyOiBib29sZWFuKTogWHJtRm9ybUtleTtcclxuICBnZXRGb3JtS2V5KGlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgY2xlYXI6IGJvb2xlYW4gPSBmYWxzZSk6IFhybUZvcm1LZXkge1xyXG4gICAgaWYgKHR5cGVvZiBpZCAhPSAndW5kZWZpbmVkJyAmJiBpZCAhPSBudWxsICYmIGlkICE9ICcnICYmIHR5cGVvZiB0eXBlICE9ICd1bmRlZmluZWQnICYmIHR5cGUgIT0gbnVsbCAmJiB0eXBlICE9ICcnKSB7XHJcbiAgICAgIGxldCByZXN1bHQgPSBuZXcgWHJtRm9ybUtleSgpO1xyXG4gICAgICByZXN1bHQuaWQgPSBpZDtcclxuICAgICAgcmVzdWx0LnR5cGUgPSB0eXBlO1xyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0gPSByZXN1bHQ7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNsZWFyICYmIHdpbmRvd1tLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXSkgZGVsZXRlIHdpbmRvd1tLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXTtcclxuICAgIGlmICh3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0pIHtcclxuICAgICAgcmV0dXJuIHdpbmRvd1tLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYgKCFjbGVhciAmJiB3aW5kb3cucGFyZW50ICYmIHdpbmRvdy5wYXJlbnRbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0pIHtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfZm9ybWVudGl0eXJdID0gd2luZG93LnBhcmVudFtLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXTtcclxuICAgICAgcmV0dXJuIHdpbmRvd1tLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNsZWFyICYmIHdpbmRvdy5vcGVuZXIgJiYgd2luZG93Lm9wZW5lcltLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXSkge1xyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0gPSB3aW5kb3cub3BlbmVyW0tpcG9uWHJtTE9DQUxfZm9ybWVudGl0eXJdO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfZm9ybWVudGl0eXJdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3dbXCJYcm1cIl0gJiYgd2luZG93W1wiWHJtXCJdW1wiUGFnZVwiXSAmJiB3aW5kb3dbXCJYcm1cIl1bXCJQYWdlXCJdW1wiZGF0YVwiXSAmJiB3aW5kb3dbXCJYcm1cIl1bXCJQYWdlXCJdW1wiZGF0YVwiXVtcImVudGl0eVwiXSkge1xyXG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IFhybUZvcm1LZXkoKTtcclxuICAgICAgcmVzdWx0LmlkID0gd2luZG93W1wiWHJtXCJdW1wiUGFnZVwiXVtcImRhdGFcIl1bXCJlbnRpdHlcIl1bXCJnZXRJZFwiXSgpO1xyXG4gICAgICByZXN1bHQudHlwZSA9IHdpbmRvd1tcIlhybVwiXVtcIlBhZ2VcIl1bXCJkYXRhXCJdW1wiZW50aXR5XCJdW1wiZ2V0RW50aXR5TmFtZVwiXSgpO1xyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0gPSByZXN1bHQ7XHJcbiAgICAgIHJldHVybiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudFtcIlhybVwiXSAmJiB3aW5kb3cucGFyZW50W1wiWHJtXCJdW1wiUGFnZVwiXSAmJiB3aW5kb3cucGFyZW50W1wiWHJtXCJdW1wiUGFnZVwiXVtcImRhdGFcIl0gJiYgd2luZG93LnBhcmVudFtcIlhybVwiXVtcIlBhZ2VcIl1bXCJkYXRhXCJdW1wiZW50aXR5XCJdKSB7XHJcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgWHJtRm9ybUtleSgpO1xyXG4gICAgICByZXN1bHQuaWQgPSB3aW5kb3cucGFyZW50W1wiWHJtXCJdW1wiUGFnZVwiXVtcImRhdGFcIl1bXCJlbnRpdHlcIl1bXCJnZXRJZFwiXSgpO1xyXG4gICAgICByZXN1bHQudHlwZSA9IHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdW1wiZGF0YVwiXVtcImVudGl0eVwiXVtcImdldEVudGl0eU5hbWVcIl0oKTtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfZm9ybWVudGl0eXJdID0gcmVzdWx0O1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfZm9ybWVudGl0eXJdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cub3BlbmVyICYmIHdpbmRvdy5vcGVuZXJbXCJYcm1cIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl1bXCJkYXRhXCJdICYmIHdpbmRvdy5vcGVuZXJbXCJYcm1cIl1bXCJQYWdlXCJdW1wiZGF0YVwiXVtcImVudGl0eVwiXSkge1xyXG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IFhybUZvcm1LZXkoKTtcclxuICAgICAgcmVzdWx0LmlkID0gd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl1bXCJkYXRhXCJdW1wiZW50aXR5XCJdW1wiZ2V0SWRcIl0oKTtcclxuICAgICAgcmVzdWx0LnR5cGUgPSB3aW5kb3cub3BlbmVyW1wiWHJtXCJdW1wiUGFnZVwiXVtcImRhdGFcIl1bXCJlbnRpdHlcIl1bXCJnZXRFbnRpdHlOYW1lXCJdKCk7XHJcblxyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0gPSByZXN1bHQ7XHJcbiAgICAgIHJldHVybiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19