cecon-interfaces
Version:
Interfaces de Projetos Cecon
91 lines • 13.6 kB
JavaScript
export class N8nChatApiCallbackEntity {
// #region Properties (12)
// Se deve executar chamada de API
callApi;
// ID único do callback para rastreamento
callbackId;
// URL da API a ser chamada
apiUrl;
// Método HTTP
method;
// Headers de autorização e outros
headers;
// Body/payload da requisição (DTO)
payload;
// Configurações da requisição
requestConfig;
// Configurações de resposta
responseHandling;
// Dados para logging e auditoria
metadata;
// Condições para executar a API
conditions;
// Webhook para notificar resultado
webhook;
// #endregion Properties (12)
constructor(data = {}) {
this.callApi = data.callApi ?? false;
this.callbackId = data.callbackId ?? '';
this.apiUrl = data.apiUrl ?? '';
this.method = data.method ?? 'POST';
this.headers = data.headers ?? {};
this.payload = data.payload;
this.requestConfig = data.requestConfig;
this.responseHandling = data.responseHandling;
this.metadata = data.metadata;
this.conditions = data.conditions;
this.webhook = data.webhook;
}
/**
* Valida se o callback está configurado corretamente para execução
*/
isValid() {
if (!this.callApi)
return true; // Se não vai chamar API, é válido
return !!(this.callbackId && this.apiUrl && this.method);
}
/**
* Valida se todas as condições são atendidas para executar a API
*/
canExecute(formData) {
if (!this.callApi || !this.isValid())
return false;
// Verifica campos obrigatórios
if (this.conditions?.requireAllFields && this.metadata?.requiredFields) {
for (const field of this.metadata.requiredFields) {
if (!formData?.[field])
return false;
}
}
// Valida validações customizadas
if (this.conditions?.customValidations && formData) {
for (const validation of this.conditions.customValidations) {
const value = formData[validation.field];
switch (validation.rule) {
case 'required':
if (!value)
return false;
break;
case 'email':
if (value && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value))
return false;
break;
case 'phone':
if (value && !/^\+?[\d\s\-\(\)]+$/.test(value))
return false;
break;
case 'date':
if (value && isNaN(Date.parse(value)))
return false;
break;
case 'regex':
if (value && validation.value && !new RegExp(validation.value).test(value))
return false;
break;
}
}
}
return true;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1hcGktY2FsbGJhY2suZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL244bi9lbnRpdGllcy9jaGF0LWFwaS1jYWxsYmFjay5lbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQywwQkFBMEI7SUFFMUIsa0NBQWtDO0lBQzNCLE9BQU8sQ0FBVTtJQUN4Qix5Q0FBeUM7SUFDbEMsVUFBVSxDQUFTO0lBQzFCLDJCQUEyQjtJQUNwQixNQUFNLENBQVM7SUFDdEIsY0FBYztJQUNQLE1BQU0sQ0FBOEM7SUFDM0Qsa0NBQWtDO0lBQzNCLE9BQU8sQ0FLWjtJQUNGLG1DQUFtQztJQUM1QixPQUFPLENBbUJaO0lBQ0YsOEJBQThCO0lBQ3ZCLGFBQWEsQ0FLbEI7SUFDRiw0QkFBNEI7SUFDckIsZ0JBQWdCLENBUXJCO0lBQ0YsaUNBQWlDO0lBQzFCLFFBQVEsQ0FTYjtJQUNGLGdDQUFnQztJQUN6QixVQUFVLENBVWY7SUFDRixtQ0FBbUM7SUFDNUIsT0FBTyxDQUtaO0lBRUYsNkJBQTZCO0lBRTdCLFlBQVksT0FBcUMsRUFBRTtRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLGtDQUFrQztRQUVsRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLFFBQThCO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRW5ELCtCQUErQjtRQUMvQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUU7WUFDdEUsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztvQkFBRSxPQUFPLEtBQUssQ0FBQzthQUN0QztTQUNGO1FBRUQsaUNBQWlDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsSUFBSSxRQUFRLEVBQUU7WUFDbEQsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFO2dCQUMxRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV6QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLEVBQUU7b0JBQ3ZCLEtBQUssVUFBVTt3QkFDYixJQUFJLENBQUMsS0FBSzs0QkFBRSxPQUFPLEtBQUssQ0FBQzt3QkFDekIsTUFBTTtvQkFDUixLQUFLLE9BQU87d0JBQ1YsSUFBSSxLQUFLLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzRCQUFFLE9BQU8sS0FBSyxDQUFDO3dCQUNyRSxNQUFNO29CQUNSLEtBQUssT0FBTzt3QkFDVixJQUFJLEtBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7NEJBQUUsT0FBTyxLQUFLLENBQUM7d0JBQzdELE1BQU07b0JBQ1IsS0FBSyxNQUFNO3dCQUNULElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUFFLE9BQU8sS0FBSyxDQUFDO3dCQUNwRCxNQUFNO29CQUNSLEtBQUssT0FBTzt3QkFDVixJQUFJLEtBQUssSUFBSSxVQUFVLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7NEJBQUUsT0FBTyxLQUFLLENBQUM7d0JBQ3pGLE1BQU07aUJBQ1Q7YUFDRjtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTjhuQ2hhdEFwaUNhbGxiYWNrIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pLWNoYXQtYXBpLWNhbGxiYWNrJztcclxuXHJcbmV4cG9ydCBjbGFzcyBOOG5DaGF0QXBpQ2FsbGJhY2tFbnRpdHkgaW1wbGVtZW50cyBJTjhuQ2hhdEFwaUNhbGxiYWNrIHtcclxuICAvLyAjcmVnaW9uIFByb3BlcnRpZXMgKDEyKVxyXG5cclxuICAvLyBTZSBkZXZlIGV4ZWN1dGFyIGNoYW1hZGEgZGUgQVBJXHJcbiAgcHVibGljIGNhbGxBcGk6IGJvb2xlYW47XHJcbiAgLy8gSUQgw7puaWNvIGRvIGNhbGxiYWNrIHBhcmEgcmFzdHJlYW1lbnRvXHJcbiAgcHVibGljIGNhbGxiYWNrSWQ6IHN0cmluZztcclxuICAvLyBVUkwgZGEgQVBJIGEgc2VyIGNoYW1hZGFcclxuICBwdWJsaWMgYXBpVXJsOiBzdHJpbmc7XHJcbiAgLy8gTcOpdG9kbyBIVFRQXHJcbiAgcHVibGljIG1ldGhvZDogJ0dFVCcgfCAnUE9TVCcgfCAnUFVUJyB8ICdQQVRDSCcgfCAnREVMRVRFJztcclxuICAvLyBIZWFkZXJzIGRlIGF1dG9yaXphw6fDo28gZSBvdXRyb3NcclxuICBwdWJsaWMgaGVhZGVyczoge1xyXG4gICAgYXV0aG9yaXphdGlvbj86IHN0cmluZzsgLy8gQmVhcmVyIHRva2VuLCBBUEkga2V5LCBldGMuXHJcbiAgICBjb250ZW50VHlwZT86IHN0cmluZztcclxuICAgIHVzZXJBZ2VudD86IHN0cmluZztcclxuICAgIGN1c3RvbUhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIH07XHJcbiAgLy8gQm9keS9wYXlsb2FkIGRhIHJlcXVpc2nDp8OjbyAoRFRPKVxyXG4gIHB1YmxpYyBwYXlsb2FkPzoge1xyXG4gICAgLy8gRGFkb3MgZG8gdXN1w6FyaW8gZGEgY29udmVyc2FcclxuICAgIHVzZXJEYXRhPzoge1xyXG4gICAgICB1c2VySWQ6IHN0cmluZztcclxuICAgICAgbmFtZT86IHN0cmluZztcclxuICAgICAgcGhvbmU/OiBzdHJpbmc7XHJcbiAgICAgIGVtYWlsPzogc3RyaW5nO1xyXG4gICAgfTtcclxuICAgIC8vIERhZG9zIGNvbGV0YWRvcyBkdXJhbnRlIGEgY29udmVyc2FcclxuICAgIGZvcm1EYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICAgIC8vIERhZG9zIGVzcGVjw61maWNvcyBkbyBjb250ZXh0b1xyXG4gICAgY29udGV4dERhdGE/OiB7XHJcbiAgICAgIHNlc3Npb25JZDogc3RyaW5nO1xyXG4gICAgICBtZXNzYWdlSWQ6IHN0cmluZztcclxuICAgICAgcGxhdGZvcm06IHN0cmluZztcclxuICAgICAgdGltZXN0YW1wOiBEYXRlO1xyXG4gICAgfTtcclxuICAgIC8vIERUTyBjdXN0b21pemFkbyBlc3BlY8OtZmljbyBkYSBhw6fDo29cclxuICAgIGN1c3RvbVBheWxvYWQ/OiBhbnk7XHJcbiAgfTtcclxuICAvLyBDb25maWd1cmHDp8O1ZXMgZGEgcmVxdWlzacOnw6NvXHJcbiAgcHVibGljIHJlcXVlc3RDb25maWc/OiB7XHJcbiAgICB0aW1lb3V0PzogbnVtYmVyOyAvLyB0aW1lb3V0IGVtIHNlZ3VuZG9zXHJcbiAgICByZXRyeUF0dGVtcHRzPzogbnVtYmVyO1xyXG4gICAgcmV0cnlEZWxheT86IG51bWJlcjsgLy8gZGVsYXkgZW50cmUgdGVudGF0aXZhcyBlbSBtc1xyXG4gICAgdmFsaWRhdGVTU0w/OiBib29sZWFuO1xyXG4gIH07XHJcbiAgLy8gQ29uZmlndXJhw6fDtWVzIGRlIHJlc3Bvc3RhXHJcbiAgcHVibGljIHJlc3BvbnNlSGFuZGxpbmc/OiB7XHJcbiAgICAvLyBTZSBkZXZlIGVudmlhciByZXNwb3N0YSBhdXRvbcOhdGljYSBiYXNlYWRhIG5vIHJlc3VsdGFkbyBkYSBBUElcclxuICAgIGF1dG9SZXNwb25zZTogYm9vbGVhbjtcclxuICAgIC8vIE1lbnNhZ2VucyBiYXNlYWRhcyBubyBzdGF0dXMgZGEgcmVzcG9zdGFcclxuICAgIHN1Y2Nlc3NNZXNzYWdlPzogc3RyaW5nO1xyXG4gICAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gICAgLy8gVGVtcGxhdGUgZGUgcmVzcG9zdGEgZGluw6JtaWNhIHVzYW5kbyBkYWRvcyBkYSBBUElcclxuICAgIHJlc3BvbnNlVGVtcGxhdGU/OiBzdHJpbmc7IC8vIEV4OiBcIkFnZW5kYW1lbnRvIGNyaWFkbyBwYXJhIHtkYXRlfSDDoHMge3RpbWV9XCJcclxuICB9O1xyXG4gIC8vIERhZG9zIHBhcmEgbG9nZ2luZyBlIGF1ZGl0b3JpYVxyXG4gIHB1YmxpYyBtZXRhZGF0YT86IHtcclxuICAgIGFjdGlvbjogc3RyaW5nOyAvLyBFeDogXCJjcmVhdGVfc2NoZWR1bGVcIiwgXCJyZWdpc3Rlcl91c2VyXCJcclxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gICAgcmVxdWlyZWRGaWVsZHM/OiBzdHJpbmdbXTsgLy8gQ2FtcG9zIG9icmlnYXTDs3Jpb3MgcGFyYSBhIGNoYW1hZGFcclxuICAgIHdvcmtmbG93Pzoge1xyXG4gICAgICB3b3JrZmxvd0lkOiBzdHJpbmc7XHJcbiAgICAgIG5vZGVJZDogc3RyaW5nO1xyXG4gICAgICBzdGVwTmFtZTogc3RyaW5nO1xyXG4gICAgfTtcclxuICB9O1xyXG4gIC8vIENvbmRpw6fDtWVzIHBhcmEgZXhlY3V0YXIgYSBBUElcclxuICBwdWJsaWMgY29uZGl0aW9ucz86IHtcclxuICAgIC8vIEV4ZWN1dGFyIHPDsyBzZSB0b2RvcyBvcyBjYW1wb3Mgb2JyaWdhdMOzcmlvcyBlc3RpdmVyZW0gcHJlZW5jaGlkb3NcclxuICAgIHJlcXVpcmVBbGxGaWVsZHM/OiBib29sZWFuO1xyXG4gICAgLy8gVmFsaWRhw6fDtWVzIGN1c3RvbWl6YWRhc1xyXG4gICAgY3VzdG9tVmFsaWRhdGlvbnM/OiBBcnJheTx7XHJcbiAgICAgIGZpZWxkOiBzdHJpbmc7XHJcbiAgICAgIHJ1bGU6ICdyZXF1aXJlZCcgfCAnZW1haWwnIHwgJ3Bob25lJyB8ICdkYXRlJyB8ICdyZWdleCc7XHJcbiAgICAgIHZhbHVlPzogc3RyaW5nOyAvLyBQYXJhIHJlZ2V4XHJcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmc7IC8vIE1lbnNhZ2VtIGRlIGVycm9cclxuICAgIH0+O1xyXG4gIH07XHJcbiAgLy8gV2ViaG9vayBwYXJhIG5vdGlmaWNhciByZXN1bHRhZG9cclxuICBwdWJsaWMgd2ViaG9vaz86IHtcclxuICAgIHVybDogc3RyaW5nO1xyXG4gICAgbWV0aG9kOiAnUE9TVCcgfCAnUFVUJztcclxuICAgIG5vdGlmeU9uU3VjY2Vzcz86IGJvb2xlYW47XHJcbiAgICBub3RpZnlPbkVycm9yPzogYm9vbGVhbjtcclxuICB9O1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXMgKDEyKVxyXG5cclxuICBjb25zdHJ1Y3RvcihkYXRhOiBQYXJ0aWFsPElOOG5DaGF0QXBpQ2FsbGJhY2s+ID0ge30pIHtcclxuICAgIHRoaXMuY2FsbEFwaSA9IGRhdGEuY2FsbEFwaSA/PyBmYWxzZTtcclxuICAgIHRoaXMuY2FsbGJhY2tJZCA9IGRhdGEuY2FsbGJhY2tJZCA/PyAnJztcclxuICAgIHRoaXMuYXBpVXJsID0gZGF0YS5hcGlVcmwgPz8gJyc7XHJcbiAgICB0aGlzLm1ldGhvZCA9IGRhdGEubWV0aG9kID8/ICdQT1NUJztcclxuICAgIHRoaXMuaGVhZGVycyA9IGRhdGEuaGVhZGVycyA/PyB7fTtcclxuICAgIHRoaXMucGF5bG9hZCA9IGRhdGEucGF5bG9hZDtcclxuICAgIHRoaXMucmVxdWVzdENvbmZpZyA9IGRhdGEucmVxdWVzdENvbmZpZztcclxuICAgIHRoaXMucmVzcG9uc2VIYW5kbGluZyA9IGRhdGEucmVzcG9uc2VIYW5kbGluZztcclxuICAgIHRoaXMubWV0YWRhdGEgPSBkYXRhLm1ldGFkYXRhO1xyXG4gICAgdGhpcy5jb25kaXRpb25zID0gZGF0YS5jb25kaXRpb25zO1xyXG4gICAgdGhpcy53ZWJob29rID0gZGF0YS53ZWJob29rO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhIHNlIG8gY2FsbGJhY2sgZXN0w6EgY29uZmlndXJhZG8gY29ycmV0YW1lbnRlIHBhcmEgZXhlY3XDp8Ojb1xyXG4gICAqL1xyXG4gIHB1YmxpYyBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmNhbGxBcGkpIHJldHVybiB0cnVlOyAvLyBTZSBuw6NvIHZhaSBjaGFtYXIgQVBJLCDDqSB2w6FsaWRvXHJcblxyXG4gICAgcmV0dXJuICEhKHRoaXMuY2FsbGJhY2tJZCAmJiB0aGlzLmFwaVVybCAmJiB0aGlzLm1ldGhvZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGEgc2UgdG9kYXMgYXMgY29uZGnDp8O1ZXMgc8OjbyBhdGVuZGlkYXMgcGFyYSBleGVjdXRhciBhIEFQSVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjYW5FeGVjdXRlKGZvcm1EYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmNhbGxBcGkgfHwgIXRoaXMuaXNWYWxpZCgpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgLy8gVmVyaWZpY2EgY2FtcG9zIG9icmlnYXTDs3Jpb3NcclxuICAgIGlmICh0aGlzLmNvbmRpdGlvbnM/LnJlcXVpcmVBbGxGaWVsZHMgJiYgdGhpcy5tZXRhZGF0YT8ucmVxdWlyZWRGaWVsZHMpIHtcclxuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLm1ldGFkYXRhLnJlcXVpcmVkRmllbGRzKSB7XHJcbiAgICAgICAgaWYgKCFmb3JtRGF0YT8uW2ZpZWxkXSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVmFsaWRhIHZhbGlkYcOnw7VlcyBjdXN0b21pemFkYXNcclxuICAgIGlmICh0aGlzLmNvbmRpdGlvbnM/LmN1c3RvbVZhbGlkYXRpb25zICYmIGZvcm1EYXRhKSB7XHJcbiAgICAgIGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiB0aGlzLmNvbmRpdGlvbnMuY3VzdG9tVmFsaWRhdGlvbnMpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGZvcm1EYXRhW3ZhbGlkYXRpb24uZmllbGRdO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHZhbGlkYXRpb24ucnVsZSkge1xyXG4gICAgICAgICAgY2FzZSAncmVxdWlyZWQnOlxyXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnZW1haWwnOlxyXG4gICAgICAgICAgICBpZiAodmFsdWUgJiYgIS9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvLnRlc3QodmFsdWUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAncGhvbmUnOlxyXG4gICAgICAgICAgICBpZiAodmFsdWUgJiYgIS9eXFwrP1tcXGRcXHNcXC1cXChcXCldKyQvLnRlc3QodmFsdWUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBpc05hTihEYXRlLnBhcnNlKHZhbHVlKSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdyZWdleCc6XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWxpZGF0aW9uLnZhbHVlICYmICFuZXcgUmVnRXhwKHZhbGlkYXRpb24udmFsdWUpLnRlc3QodmFsdWUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=