ng-yunzai-mobile
Version:
1. 适配yunzai_uni_app_x
379 lines • 27.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: devices/dingtalk.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { BaseDevice } from "./base.device";
import { Inject, Injectable } from "@angular/core";
import { TokenService } from "../token/token.service";
import { HttpClient } from "@angular/common/http";
import { UserService } from "../user/user.service";
import { BASE_CLIENT } from "../client/base.client";
import { preloaderFinished } from "../auth/preloader";
import { from } from "rxjs";
import { Title } from "@angular/platform-browser";
import * as i0 from "@angular/core";
import * as i1 from "../token/token.service";
import * as i2 from "@angular/common/http";
import * as i3 from "../user/user.service";
import * as i4 from "@angular/platform-browser";
import * as i5 from "../client/base.client";
/** @type {?} */
const apis = [
'requestAuthCode',
'scan',
'getLocation',
'device.geolocation.get',
];
export class Dingtalk extends BaseDevice {
/**
* @param {?} tokenService
* @param {?} http
* @param {?} user
* @param {?} title
* @param {?} baseclient
*/
constructor(tokenService, http, user, title, baseclient) {
super();
this.tokenService = tokenService;
this.http = http;
this.user = user;
this.title = title;
this.baseclient = baseclient;
}
/**
* @return {?}
*/
auth() {
if (this.baseclient.dingtalk && this.baseclient.dingtalk.auth === false) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
preloaderFinished();
resolve(true);
}));
}
return new Promise((/**
* @param {?} reject
* @param {?} resolve
* @return {?}
*/
(reject, resolve) => {
/** @type {?} */
const url = encodeURIComponent(window.location.href);
this.http
.get(`${this.baseclient.gateway}/wechat/mp/token?url=` + url)
.subscribe((/**
* @param {?} token
* @return {?}
*/
(token) => {
if (token.error_code === 200) {
this.tokenService.set((/** @type {?} */ ({
accessToken: token.message,
tokenType: "bearer",
})));
this.http
.get(`${this.baseclient.gateway}/auth/user`)
.subscribe((/**
* @param {?} response
* @return {?}
*/
(response) => {
this.user.set(Object.assign({}, response.principal, { tenantId: response.tenantId }));
this.generateDingtalkConfig();
preloaderFinished();
reject(null);
}));
}
else if (token.error_code === 500) {
// 没有token,则重定向到认证页面,认证完成后会跳回本页面
window.location.href = token.path;
}
}));
}));
}
/**
* @param {?} iwindow
* @return {?}
*/
openWindow(iwindow) {
window.open(iwindow.url, '_self');
}
/**
* @param {?} ititle
* @return {?}
*/
setTitle(ititle) {
this.title.setTitle(ititle.title);
}
/**
* @param {?} navigationBar
* @return {?}
*/
setNavigationBar(navigationBar) {
alert("dingtalk暂不支持放置按钮!");
}
/**
* @param {?} ishare
* @return {?}
*/
share(ishare) {
alert("dingtalk暂不支持分享!");
}
/**
* @return {?}
*/
getToken() {
return this.tokenService.get();
}
/**
* @return {?}
*/
scanCode() {
/** @type {?} */
const p = new Promise((/**
* @param {?} resolve
* @return {?}
*/
resolve => {
dd.scan({
type: 'qr',
success: (/**
* @param {?} res
* @return {?}
*/
(res) => {
resolve(res.text);
}),
fail: (/**
* @param {?} err
* @return {?}
*/
(err) => {
console.log('调用扫一扫失败:' + JSON.stringify(err));
}),
});
}));
return from(p);
}
/**
* @return {?}
*/
userLocation() {
/** @type {?} */
const p = new Promise((/**
* @param {?} resolve
* @return {?}
*/
resolve => {
dd.getLocation({
type: 1,
useCache: true,
coordinate: '0',
cacheTimeout: 20,
withReGeocode: true,
targetAccuracy: '200',
success: (/**
* @param {?} res
* @return {?}
*/
(res) => {
console.log(res);
const { latitude, longitude, address } = res;
resolve({ latitude, longitude, address });
}),
fail: (/**
* @param {?} err
* @return {?}
*/
(err) => {
console.log('调用定位失败:' + JSON.stringify(err));
}),
});
}));
return from(p);
}
/**
* @param {?} bssids
* @return {?}
*/
validateInWifi(bssids) {
alert("dingtalk暂不支持WIFI验证!");
return undefined;
}
/**
* @return {?}
*/
getWifiMac() {
alert("dingtalk暂不支持获取MAC地址!");
return undefined;
}
/**
* @param {?} count
* @return {?}
*/
chooseContacts(count) {
alert("dingtalk暂不支持获取联系人!");
return undefined;
}
/**
* @param {?} targetUserId
* @return {?}
*/
contactDetails(targetUserId) {
alert("dingtalk暂不支持查询联系人详细信息!");
return undefined;
}
/**
* @param {?} count
* @param {?} sourceType
* @return {?}
*/
uploadImage(count, sourceType) {
alert("dingtalk暂不支持图片上传!");
return undefined;
}
/**
* @param {?} url
* @param {?} openType
* @param {?} title
* @param {?} id
* @param {?} type
* @return {?}
*/
openReadWithTimer(url, openType, title, id, type) {
alert("dingtalk暂不支持读物时间统计!");
return undefined;
}
/**
* @param {?} limitMinute
* @return {?}
*/
uploadMovie(limitMinute) {
alert("dingtalk暂不支持视频上传!");
return undefined;
}
/**
* @param {?} url
* @param {?} title
* @return {?}
*/
fileBrowser(url, title) {
alert("dingtalk暂不支持此功能!");
return undefined;
}
/**
* @param {?} ticket
* @param {?} callback
* @return {?}
*/
startSearchBeacons(ticket, callback) {
throw new Error("Method not implemented.");
}
/**
* @param {?} callback
* @return {?}
*/
stopSearchBeacons(callback) {
throw new Error("Method not implemented.");
}
/**
* @param {?} callback
* @return {?}
*/
onSearchBeacons(callback) {
throw new Error("Method not implemented.");
}
/**
* @return {?}
*/
generateDingtalkConfig() {
this.http
.get(`${this.baseclient.gateway}/wechat/mp/jssdk?url=${encodeURIComponent(window.location.href)}`)
.subscribe((/**
* @param {?} response
* @return {?}
*/
(response) => {
try {
dd.config({
agentId: response.agentId,
// 必填,微应用ID
corpId: response.corpId,
// 必填,企业ID
timeStamp: response.timestamp,
// 必填,生成签名的时间戳
nonceStr: response.nonceStr,
// 必填,自定义固定字符串。
signature: response.signature,
// 必填,签名
type: 0,
// 选填。0表示微应用的jsapi,1表示服务窗的jsapi;不填默认为0。该参数从dingtalk.js的0.8.3版本开始支持
jsApiList: apis // 必填,需要使用的jsapi列表,注意:不要带dd。
});
}
catch (e) {
console.log(e);
}
}));
dd.ready((/**
* @return {?}
*/
() => {
console.log('钉钉jssdk初始化完成.');
}));
dd.error((/**
* @param {?} res
* @return {?}
*/
(res) => {
console.log('钉钉jssdk初始化失败:', res);
}));
}
}
Dingtalk.decorators = [
{ type: Injectable, args: [{
providedIn: "root",
},] }
];
/** @nocollapse */
Dingtalk.ctorParameters = () => [
{ type: TokenService },
{ type: HttpClient },
{ type: UserService },
{ type: Title },
{ type: undefined, decorators: [{ type: Inject, args: [BASE_CLIENT,] }] }
];
/** @nocollapse */ Dingtalk.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function Dingtalk_Factory() { return new Dingtalk(i0.ɵɵinject(i1.TokenService), i0.ɵɵinject(i2.HttpClient), i0.ɵɵinject(i3.UserService), i0.ɵɵinject(i4.Title), i0.ɵɵinject(i5.BASE_CLIENT)); }, token: Dingtalk, providedIn: "root" });
if (false) {
/**
* @type {?}
* @private
*/
Dingtalk.prototype.tokenService;
/**
* @type {?}
* @private
*/
Dingtalk.prototype.http;
/**
* @type {?}
* @private
*/
Dingtalk.prototype.user;
/**
* @type {?}
* @private
*/
Dingtalk.prototype.title;
/**
* @type {?}
* @private
*/
Dingtalk.prototype.baseclient;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGluZ3RhbGsuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy15dW56YWktbW9iaWxlLyIsInNvdXJjZXMiOlsiZGV2aWNlcy9kaW5ndGFsay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFDLFdBQVcsRUFBYSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFBQyxJQUFJLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztNQUkxQyxJQUFJLEdBQUc7SUFDWCxpQkFBaUI7SUFDakIsTUFBTTtJQUNOLGFBQWE7SUFDYix3QkFBd0I7Q0FDekI7QUFRRCxNQUFNLE9BQU8sUUFBUyxTQUFRLFVBQVU7Ozs7Ozs7O0lBQ3RDLFlBQ1UsWUFBMEIsRUFDMUIsSUFBZ0IsRUFDaEIsSUFBaUIsRUFDakIsS0FBWSxFQUNTLFVBQXNCO1FBRW5ELEtBQUssRUFBRSxDQUFDO1FBTkEsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDUyxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBR3JELENBQUM7Ozs7SUFFRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsVUFBVSxD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Qyx3QkFBd0I7Ozs7O0lBQ3hCLHdCQUF5Qjs7Ozs7SUFDekIseUJBQW9COzs7OztJQUNwQiw4QkFBbUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Jhc2VEZXZpY2V9IGZyb20gXCIuL2Jhc2UuZGV2aWNlXCI7XHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1Rva2VuU2VydmljZX0gZnJvbSBcIi4uL3Rva2VuL3Rva2VuLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtVc2VyU2VydmljZX0gZnJvbSBcIi4uL3VzZXIvdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QkFTRV9DTElFTlQsIEJhc2VDbGllbnR9IGZyb20gXCIuLi9jbGllbnQvYmFzZS5jbGllbnRcIjtcclxuaW1wb3J0IHtwcmVsb2FkZXJGaW5pc2hlZH0gZnJvbSBcIi4uL2F1dGgvcHJlbG9hZGVyXCI7XHJcbmltcG9ydCB7SXRva2VufSBmcm9tIFwiLi4vYXV0aC9pdG9rZW5cIjtcclxuaW1wb3J0IHtmcm9tLCBPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge0lTaGFyZSwgSVRpdGxlLCBJV2luZG93LCBOYXZpZ2F0aW9uQmFyLCBVc2VyTG9jYXRpb259IGZyb20gXCIuL21vZGVsXCI7XHJcbmltcG9ydCB7VGl0bGV9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcbmltcG9ydCB7TXlXZWNoYXRNcFRva2VufSBmcm9tIFwiLi9tb2RlbC93ZWNoYXQubXBcIjtcclxuXHJcblxyXG5jb25zdCBhcGlzID0gW1xyXG4gICdyZXF1ZXN0QXV0aENvZGUnLFxyXG4gICdzY2FuJyxcclxuICAnZ2V0TG9jYXRpb24nLFxyXG4gICdkZXZpY2UuZ2VvbG9jYXRpb24uZ2V0JyxcclxuXTtcclxuXHJcblxyXG5kZWNsYXJlIGxldCBkZDtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIERpbmd0YWxrIGV4dGVuZHMgQmFzZURldmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRva2VuU2VydmljZTogVG9rZW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdGl0bGU6IFRpdGxlLFxyXG4gICAgQEluamVjdChCQVNFX0NMSUVOVCkgcHJpdmF0ZSBiYXNlY2xpZW50OiBCYXNlQ2xpZW50XHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgYXV0aCgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgaWYgKHRoaXMuYmFzZWNsaWVudC5kaW5ndGFsayAmJiB0aGlzLmJhc2VjbGllbnQuZGluZ3RhbGsuYXV0aCA9PT0gZmFsc2UpIHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIHByZWxvYWRlckZpbmlzaGVkKCk7XHJcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVqZWN0LCByZXNvbHZlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVybCA9IGVuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZik7XHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5nZXQoYCR7dGhpcy5iYXNlY2xpZW50LmdhdGV3YXl9L3dlY2hhdC9tcC90b2tlbj91cmw9YCArIHVybClcclxuICAgICAgICAuc3Vic2NyaWJlKCh0b2tlbjogTXlXZWNoYXRNcFRva2VuKSA9PiB7XHJcbiAgICAgICAgICBpZiAodG9rZW4uZXJyb3JfY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldCh7XHJcbiAgICAgICAgICAgICAgYWNjZXNzVG9rZW46IHRva2VuLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgdG9rZW5UeXBlOiBcImJlYXJlclwiLFxyXG4gICAgICAgICAgICB9IGFzIGFueSk7XHJcbiAgICAgICAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAgIC5nZXQoYCR7dGhpcy5iYXNlY2xpZW50LmdhdGV3YXl9L2F1dGgvdXNlcmApXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyLnNldCh7IC4uLnJlc3BvbnNlLnByaW5jaXBhbCwgdGVuYW50SWQ6IHJlc3BvbnNlLnRlbmFudElkIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURpbmd0YWxrQ29uZmlnKCk7XHJcbiAgICAgICAgICAgICAgICBwcmVsb2FkZXJGaW5pc2hlZCgpO1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0b2tlbi5lcnJvcl9jb2RlID09PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g5rKh5pyJdG9rZW7vvIzliJnph43lrprlkJHliLDorqTor4HpobXpnaLvvIzorqTor4HlrozmiJDlkI7kvJrot7Plm57mnKzpobXpnaJcclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0b2tlbi5wYXRoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuV2luZG93KGl3aW5kb3c6IElXaW5kb3cpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5vcGVuKGl3aW5kb3cudXJsLCAnX3NlbGYnKTtcclxuICB9XHJcblxyXG4gIHNldFRpdGxlKGl0aXRsZTogSVRpdGxlKTogdm9pZCB7XHJcbiAgICB0aGlzLnRpdGxlLnNldFRpdGxlKGl0aXRsZS50aXRsZSk7XHJcbiAgfVxyXG5cclxuICBzZXROYXZpZ2F0aW9uQmFyKG5hdmlnYXRpb25CYXI6IE5hdmlnYXRpb25CYXIpOiB2b2lkIHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHmlL7nva7mjInpkq4hXCIpO1xyXG4gIH1cclxuXHJcbiAgc2hhcmUoaXNoYXJlOiBJU2hhcmUpOiB2b2lkIHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHliIbkuqshXCIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9rZW4oKTogSXRva2VuIHtcclxuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZS5nZXQoKTtcclxuICB9XHJcblxyXG4gIHNjYW5Db2RlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBwID0gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlID0+IHtcclxuICAgICAgZGQuc2Nhbih7XHJcbiAgICAgICAgdHlwZTogJ3FyJyxcclxuICAgICAgICBzdWNjZXNzOiAocmVzKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHJlcy50ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCfosIPnlKjmiavkuIDmiavlpLHotKU6JyArIEpTT04uc3RyaW5naWZ5KGVycikpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZnJvbShwKTtcclxuICB9XHJcblxyXG4gIHVzZXJMb2NhdGlvbigpOiBPYnNlcnZhYmxlPFVzZXJMb2NhdGlvbj4ge1xyXG4gICAgY29uc3QgcCA9IG5ldyBQcm9taXNlPFVzZXJMb2NhdGlvbj4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgIGRkLmdldExvY2F0aW9uKHtcclxuICAgICAgICB0eXBlOiAxLFxyXG4gICAgICAgIHVzZUNhY2hlOiB0cnVlLFxyXG4gICAgICAgIGNvb3JkaW5hdGU6ICcwJyxcclxuICAgICAgICBjYWNoZVRpbWVvdXQ6IDIwLFxyXG4gICAgICAgIHdpdGhSZUdlb2NvZGU6IHRydWUsXHJcbiAgICAgICAgdGFyZ2V0QWNjdXJhY3k6ICcyMDAnLFxyXG4gICAgICAgIHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWRkcmVzc30gPSByZXM7XHJcbiAgICAgICAgICByZXNvbHZlKHtsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhZGRyZXNzfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBmYWlsOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygn6LCD55So5a6a5L2N5aSx6LSlOicgKyBKU09OLnN0cmluZ2lmeShlcnIpKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZyb20ocCk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUluV2lmaShic3NpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyBV0lGSemqjOivgSFcIik7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2lmaU1hYygpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeiOt+WPlk1BQ+WcsOWdgCFcIik7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY2hvb3NlQ29udGFjdHMoY291bnQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyB6I635Y+W6IGU57O75Lq6IVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBjb250YWN0RGV0YWlscyh0YXJnZXRVc2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyB5p+l6K+i6IGU57O75Lq66K+m57uG5L+h5oGvIVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRJbWFnZShjb3VudDogbnVtYmVyLCBzb3VyY2VUeXBlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeWbvueJh+S4iuS8oCFcIik7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgb3BlblJlYWRXaXRoVGltZXIoXHJcbiAgICB1cmw6IGFueSxcclxuICAgIG9wZW5UeXBlOiBhbnksXHJcbiAgICB0aXRsZTogYW55LFxyXG4gICAgaWQ6IGFueSxcclxuICAgIHR5cGU6IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyB6K+754mp5pe26Ze057uf6K6hIVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRNb3ZpZShsaW1pdE1pbnV0ZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHop4bpopHkuIrkvKAhXCIpO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGZpbGVCcm93c2VyKHVybDogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHmraTlip/og70hXCIpO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHN0YXJ0U2VhcmNoQmVhY29ucyh0aWNrZXQ6IHN0cmluZywgY2FsbGJhY2s6IChhcmd2OiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gIH1cclxuXHJcbiAgc3RvcFNlYXJjaEJlYWNvbnMoY2FsbGJhY2s6IChhcmd2OiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hCZWFjb25zKGNhbGxiYWNrOiAoYXJndjogYW55KSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcclxuICB9XHJcblxyXG5cclxuICBnZW5lcmF0ZURpbmd0YWxrQ29uZmlnKCk6IHZvaWQge1xyXG4gICAgdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7dGhpcy5iYXNlY2xpZW50LmdhdGV3YXl9L3dlY2hhdC9tcC9qc3Nkaz91cmw9JHtlbmNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLmhyZWYpfWApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgZGQuY29uZmlnKHtcclxuICAgICAgICAgICAgYWdlbnRJZDogcmVzcG9uc2UuYWdlbnRJZCwgLy8g5b+F5aGr77yM5b6u5bqU55SoSURcclxuICAgICAgICAgICAgY29ycElkOiByZXNwb25zZS5jb3JwSWQsIC8vIOW/heWhq++8jOS8geS4mklEXHJcbiAgICAgICAgICAgIHRpbWVTdGFtcDogcmVzcG9uc2UudGltZXN0YW1wLCAvLyDlv4XloavvvIznlJ/miJDnrb7lkI3nmoTml7bpl7TmiLNcclxuICAgICAgICAgICAgbm9uY2VTdHI6IHJlc3BvbnNlLm5vbmNlU3RyLCAvLyDlv4XloavvvIzoh6rlrprkuYnlm7rlrprlrZfnrKbkuLLjgIJcclxuICAgICAgICAgICAgc2lnbmF0dXJlOiByZXNwb25zZS5zaWduYXR1cmUsIC8vIOW/heWhq++8jOetvuWQjVxyXG4gICAgICAgICAgICB0eXBlOiAwLCAgIC8vIOmAieWhq+OAgjDooajnpLrlvq7lupTnlKjnmoRqc2FwaSwx6KGo56S65pyN5Yqh56qX55qEanNhcGnvvJvkuI3loavpu5jorqTkuLow44CC6K+l5Y+C5pWw5LuOZGluZ3RhbGsuanPnmoQwLjguM+eJiOacrOW8gOWni+aUr+aMgVxyXG4gICAgICAgICAgICBqc0FwaUxpc3Q6IGFwaXMgLy8g5b+F5aGr77yM6ZyA6KaB5L2/55So55qEanNhcGnliJfooajvvIzms6jmhI/vvJrkuI3opoHluKZkZOOAglxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIGRkLnJlYWR5KCgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ+mSiemSiWpzc2Rr5Yid5aeL5YyW5a6M5oiQLicpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZGQuZXJyb3IoKHJlcykgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygn6ZKJ6ZKJanNzZGvliJ3lp4vljJblpLHotKU6JywgcmVzKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=