{"version":3,"names":[],"mappings":"","sources":["detalhes-advogado.js"],"sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i\\n \\n \\n \\n \\n \",\n methods: {\n getItems: function getItems() {\n var _this = this;\n\n debugger;\n this.currentParam = window.location;\n\n if (this.currentParam.hash) {\n this.currentParam = this.currentParam.href.split(/\\/advogados\\//gi).reverse()[0].split(\"?\")[0].split(\"#\")[0];\n } else {\n this.currentParam = this.currentParam.href.split(/\\/advogados\\//gi).reverse()[0].split(\"?\")[0];\n }\n\n return $pnp.sp.web.getList(this.listURL).items.select(\"*, AuxTipoProfissional/Title, AuxTipoProfissional/TitleEN, Escritorio/Title, Idioma/Title, Idioma/TitleEN, AuxAreaAtuacao/Title, AuxAreaAtuacao/SeoURL, AuxAreaAtuacao/TitleEN\").expand(\"AuxTipoProfissional, Escritorio, Idioma, AuxAreaAtuacao\").filter(\"SeoURL eq '\" + this.currentParam + \"'\").get().then(function (results) {\n\n _this.escritorios = results[0].Escritorio.results;\n _this.idiomas = results[0].Idioma.results;\n _this.areasAtuacao = results[0].AuxAreaAtuacao.results;\n _this.formacao = results[0];\n Vue.set(_this, 'detalhesAdvogado', results[0]);\n _this.loadedAdvogado = true;\n }).catch(function (err) {\n _this.loadedAdvogado = false;\n });\n },\n applyEvents: function applyEvents() {\n // get page title\n var titlePage = document.getElementsByTagName('h1')[0];\n // alterando o titulo da pagina para o nome do profissional\n titlePage.innerText = this.detalhesAdvogado.FullName;\n // hide page title\n titlePage.style.display = 'none';\n // verificando se já carregou os itens\n if (this.loadedAdvogado) {\n // alterando o titulo do navegador\n document.title = this.detalhesAdvogado.FullName + ' | ' + document.title.split('|')[1];\n $('li.current').find('span').text(this.detalhesAdvogado.FullName);\n }\n },\n getPicture: function getPicture(img) {\n if (img) {\n return img;\n } else {\n return _spPageContextInfo.webServerRelativeUrl + \"style library/images/empty-picture.png\";\n }\n }\n },\n created: function created() {\n this.getItems();\n }\n});\n\nvar app = new Vue({\n el: \"#detalhes-advogado\",\n template: \"\"\n});\n\n},{\"../../mixins/pnp-mixin\":2,\"../../mixins/sp-mixin\":3,\"../../mixins/translate\":4}],2:[function(require,module,exports){\n'use strict';\n\nwindow.pnpMixin = function ($pnp) {\n\tvar pnpMixin = {\n\t\tmethods: {\n\t\t\tgetCurrentUser: function getCurrentUser() {\n\t\t\t\treturn $pnp.sp.web.siteUsers.getById(_spPageContextInfo.userId).expand('groups').get();\n\t\t\t},\n\t\t\tisUserMemberOf: function isUserMemberOf(groupName, groups) {\n\t\t\t\treturn [].concat(groups).some(function (group) {\n\t\t\t\t\treturn group.Title === groupName;\n\t\t\t\t});\n\t\t\t},\n\t\t\tgetRelativeUrl: function getRelativeUrl(link) {\n\t\t\t\treturn $pnp.util.makeUrlAbsolute(link).replace(location.protocol + '//' + location.hostname, '');\n\t\t\t},\n\t\t\ttruncateString: function truncateString(str, length) {\n\t\t\t\treturn !str ? \"\" : str.length > length ? str.substring(0, length - 3) + '...' : str;\n\t\t\t},\n\t\t\tgetPicture: function getPicture(user) {\n\t\t\t\treturn _spPageContextInfo.webAbsoluteUrl + '/_layouts/15/userphoto.aspx?size=L&username=' + user + '';\n\t\t\t},\n\t\t\tgetList: function getList(settings) {\n\t\t\t\tvar request = $pnp.sp.web.getList(settings.listUrl).items;\n\t\t\t\tsettings.select ? request.select(settings.select) : null;\n\t\t\t\tsettings.orderBy ? request.orderBy(settings.orderBy, settings.orderByAsc) : null;\n\t\t\t\tsettings.filter ? request.filter(settings.filter) : null;\n\t\t\t\tsettings.expand ? request.expand(settings.expand) : null;\n\t\t\t\tsettings.top ? request.expand(settings.top) : null;\n\n\t\t\t\treturn request.get();\n\t\t\t},\n\t\t\tgetSEOUrl: function getSEOUrl(parametro, url) {\n\t\t\t\t// parametro - caso esteja sem SEOUrl\n\t\t\t\t// url - url da página já com SEOUrl, já que tudo depois dela é parametro de SEOUrl ('/linkdapagina/')\n\t\t\t\treturn $pnp.util.getUrlParamByName(parametro) || location.href.split('/' + url + '/').reverse()[0].split('#')[0].split('?')[0];\n\t\t\t},\n\t\t\tthreatError: function threatError(err, msg) {\n\t\t\t\treturn swal({\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\ttext: msg || err,\n\t\t\t\t\ttitle: 'Oops!'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\treturn pnpMixin;\n}($pnp);\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar translateMixin = require('./translate');\n\nmodule.exports = {\n mixins: [translateMixin],\n methods: {\n threatError: function threatError(msg, data) {\n console.error(arguments);\n var defaultMsg = !this.isEnglish ? \"Ocorreu um erro\" : \"An error has ocurred\";\n\n return swal({\n title: \"Erro\",\n text: msg || defaultMsg,\n type: \"error\"\n });\n },\n clone: function clone(obj) {\n if (null == obj || \"object\" != (typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj))) return obj;\n return JSON.parse(JSON.stringify(obj));\n },\n getEmptyItem: function getEmptyItem(listFields) {\n return this.clone(listFields);\n },\n validateRequiredField: function validateRequiredField(fields) {\n return !Object.keys(fields).some(function (key) {\n return !fields[key].Value && fields[key].Required;\n });\n },\n getSEOUrl: function getSEOUrl(parametro, url) {\n // parametro - caso esteja sem SEOUrl\n // url - url da página já com SEOUrl, já que tudo depois dela é parametro de SEOUrl ('/linkdapagina/')\n return $pnp.util.getUrlParamByName(parametro) || location.href.split(\"/\" + url + \"/\").reverse()[0].split('#')[0].split('?')[0];\n },\n getInvalidFields: function getInvalidFields(fields) {\n var _this = this;\n\n var msgsErro = [];\n var msgObrigatorio = false;\n\n fields = Object.keys(fields).filter(function (key) {\n var field = fields[key];\n if (field.InternalName === 'Email' && field.Value) {\n var emailValido = _this.validateEmail(field.Value);\n if (!emailValido) {\n msgsErro.push((!_this.isEnglish ? 'O e-mail' : 'The email') + \" \" + field.Value + \" \" + (!_this.isEnglish ? 'é inválido' : 'is invalid'));\n }\n return !emailValido;\n } else if (field.Required) {\n var validation = false;\n if (field.TypeAsString === 'LookupMulti') {\n validation = !(field.Value || []).length;\n } else {\n validation = !field.Value;\n }\n if (validation && msgObrigatorio == false) {\n msgObrigatorio = true;\n //msgsErro.push(`O campo ${field.Title} é obrigatório`)\n msgsErro.push(!_this.isEnglish ? 'Preencha os campos obrigatórios' : 'Fill in the required fields');\n }\n return validation;\n }\n });\n if (msgObrigatorio >= 1) {\n //alert('Preencha os campos obrigatórios'); \n\n }\n return {\n msgsErro: msgsErro,\n fields: fields\n };\n },\n exportVCard: function exportVCard(ID) {\n var F = document.forms[0];\n F.action = \"/_layouts/15/SimbioX.SP2013.SPExporter/ExportToVCard.ashx\";\n F.__VIEWSTATE.name = 'NOVIEWSTATE';\n F.__VIEWSTATE.value = \"List:Profissionais;ID:\" + ID + \";ListURL:;\";\n F.method = 'POST';\n F.onsubmit = function () {};\n F.submit();\n },\n exportPDF: function exportPDF(element, fileName) {\n $(\"#\" + element).show();\n\n /*var cache_width = $(element).width(); //Criado um cache do CSS\n var a4 =[ 595.28, 841.89]; // Widht e Height de uma folha a4\n // Setar o width da div no formato a4\n $(element).width((a4[0]*1.33333) -80).css('max-width','none');\n // Aqui ele cria a imagem e cria o pdf\n html2canvas(document.querySelector(element)).then(canvas => {\n document.body.appendChild(canvas);\n var img = canvas.toDataURL(\"image/png\",1.0); \n var doc = new jsPDF({unit:'px', format:'a4'});\n doc.addImage(img, 'JPEG', 20, 20);\n doc.save(`Download de PDF - ${fileName}.pdf`);\n //Retorna ao CSS normal\n $(element).width(cache_width);\n $(element).hide()\n });*/\n\n var quotes = document.getElementById(element);\n html2canvas(quotes).then(function (canvas) {\n //! MAKE YOUR PDF\n var pdf = new jsPDF('p', 'pt', 'letter');\n\n for (var i = 0; i <= quotes.clientHeight / 980; i++) {\n //! This is all just html2canvas stuff\n var srcImg = canvas;\n var sX = 0;\n var sY = 980 * i; // start 980 pixels down for every new page\n var sWidth = 980;\n var sHeight = 980;\n var dX = 0;\n var dY = 0;\n var dWidth = 980;\n var dHeight = 980;\n\n window.onePageCanvas = document.createElement(\"canvas\");\n onePageCanvas.setAttribute('width', 980);\n onePageCanvas.setAttribute('height', 980);\n var ctx = onePageCanvas.getContext('2d');\n // details on this usage of this function: \n // https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Using_images#Slicing\n ctx.drawImage(srcImg, sX, sY, sWidth, sHeight, dX, dY, dWidth, dHeight);\n\n // document.body.appendChild(canvas);\n var canvasDataURL = onePageCanvas.toDataURL(\"image/png\", 1.0);\n\n var width = onePageCanvas.width;\n var height = onePageCanvas.clientHeight;\n\n //! If we're on anything other than the first page,\n // add another page\n if (i > 0) {\n pdf.addPage(612, 791); //8.5\" x 11\" in pts (in*72)\n }\n //! now we declare that we're working on that page\n pdf.setPage(i + 1);\n //! now we add content to that page!\n pdf.addImage(canvasDataURL, 'PNG', 10, 10, width * .62, height * .62);\n }\n //! after the for loop is finished running, we save the pdf.\n pdf.save(fileName + \".pdf\");\n $(\"#\" + element).hide();\n });\n },\n validateEmail: function validateEmail() {\n var email = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var usuario = email.substring(0, email.indexOf(\"@\"));\n var dominio = email.substring(email.indexOf(\"@\") + 1, email.length);\n\n if (usuario.length >= 1 && dominio.length >= 3 && usuario.search(\"@\") == -1 && dominio.search(\"@\") == -1 && usuario.search(\" \") == -1 && dominio.search(\" \") == -1 && dominio.search(\".\") != -1 && dominio.indexOf(\".\") >= 1 && dominio.lastIndexOf(\".\") < dominio.length - 1) {\n return true;\n } else {\n return false;\n }\n }\n },\n data: function data() {\n return {\n letrasAlfabeto: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'],\n meses: [{\n Title: 'Janeiro',\n TitleEN: 'January'\n }, {\n Title: \"Fevereiro\",\n TitleEN: \"February\"\n }, {\n Title: \"Mar\\xE7o\",\n TitleEN: \"March\"\n }, {\n Title: \"Abril\",\n TitleEN: \"April\"\n }, {\n Title: \"Maio\",\n TitleEN: \"May\"\n }, {\n Title: \"Junho\",\n TitleEN: \"June\"\n }, {\n Title: \"Julho\",\n TitleEN: \"July\"\n }, {\n Title: \"Agosto\",\n TitleEN: \"August\"\n }, {\n Title: \"Setembro\",\n TitleEN: \"September\"\n }, {\n Title: \"Outubro\",\n TitleEN: \"October\"\n }, {\n Title: \"Novembro\",\n TitleEN: \"November\"\n }, {\n Title: \"Dezembro\",\n TitleEN: \"December\"\n }]\n };\n }\n};\n\n},{\"./translate\":4}],4:[function(require,module,exports){\n\"use strict\";\n\nwindow.translateMixin = {\n methods: {\n changeLanguage: function changeLanguage(value) {\n if (CurrentLanguageDecimal == value) {\n return null;\n }\n\n var today = new Date();\n var oneYear = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000);\n var url = window.location.href;\n document.cookie = \"lcid=\" + value + \";path=/;expires=\" + oneYear.toGMTString();\n location.href = url;\n location.reload();\n },\n changePageTitle: function changePageTitle() {\n var _this = this;\n\n return $pnp.sp.web.getList(this.libraryPagesURL).items.getById(this.idCurrentPage).select(\"Id, Title, TitleEN, Descricao, DescricaoEN, IsDisp\").get().then(function (page) {\n Vue.set(_this, 'infosCurrentPage', page);\n if (!page.IsDisp) {\n\n document.title = _this.isEnglish ? 'Loading...' : 'Carregando...';\n if (_this.isEnglish) {\n if (page.Title == null) {\n document.title = _this.currentTitleBrowser;\n } else {\n document.title = page.TitleEN + \" | \" + _this.currentTitleBrowser;\n }\n } else {\n document.title = page.Title + \" | \" + _this.currentTitleBrowser;\n }\n _this.loadedInfosPage = true;\n }\n }).catch(function (err) {\n console.error(\"\" + (err - 'Erro ao carregar informações da biblioteca de páginas.'));\n });\n }\n },\n data: function data() {\n return {\n isEnglish: CurrentLanguageDecimal == 1033,\n currentLang: CurrentLanguageDecimal,\n libraryPagesURL: _spPageContextInfo.serverRequestPath.toLocaleLowerCase().match(/pages/i) ? '/pages' : 'paginas',\n idCurrentPage: _spPageContextInfo.pageItemId,\n infosCurrentPage: {},\n currentTitleBrowser: _spPageContextInfo.webTitle,\n loadedInfosPage: false\n };\n },\n created: function created() {\n if (this.idCurrentPage && !this.loadedInfosPage) {\n this.changePageTitle();\n }\n }\n};\n\n},{}]},{},[1])\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvanMvY29tcG9uZW50cy9pbnRlcm5hcy9kZXRhbGhlcy1hZHZvZ2Fkby5qcyIsInNyYy9qcy9taXhpbnMvcG5wLW1peGluLmpzIiwic3JjL2pzL21peGlucy9zcC1taXhpbi5qcyIsInNyYy9qcy9taXhpbnMvdHJhbnNsYXRlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7QUNBQSxLQUFLLEtBQUwsQ0FBVztBQUNQLGFBQVM7QUFDTCxrQkFBVTtBQURMO0FBREYsQ0FBWDs7QUFNQSxRQUFRLHdCQUFSO0FBQ0EsUUFBUSx3QkFBUjtBQUNBLElBQUksVUFBVSxRQUFRLHVCQUFSLENBQWQ7O0FBRUEsSUFBSSxTQUFKLHNCQUFtQztBQUMvQixRQUQrQixrQkFDeEI7QUFDSCxZQUFJLFdBQVcsZUFBZjtBQUNBLGVBQU87QUFDSCxzQkFBVSxRQURQO0FBRUgscUJBQVksbUJBQW1CLG9CQUEvQixlQUE2RCxRQUYxRDtBQUdILDhCQUFrQixFQUhmO0FBSUgsMEJBQWMsSUFKWDtBQUtILHlCQUFhLEVBTFY7QUFNSCxxQkFBUyxFQU5OO0FBT0gsMEJBQWMsRUFQWDtBQVFILDRCQUFnQjtBQVJiLFNBQVA7QUFVSCxLQWI4Qjs7QUFjL0IsWUFBUSxDQUFDLGNBQUQsRUFBaUIsUUFBakIsRUFBMkIsT0FBM0IsQ0FkdUI7QUFlL0Isc2lPQWYrQjtBQWdIL0IsYUFBUztBQUNMLGdCQURLLHNCQUNNO0FBQUE7O0FBQ1A7QUFDQyxpQkFBSyxZQUFMLEdBQW9CLE9BQU8sUUFBM0I7O0FBRUQsZ0JBQUcsS0FBSyxZQUFMLENBQWtCLElBQXJCLEVBQTBCO0FBQ3RCLHFCQUFLLFlBQUwsR0FBb0IsS0FBSyxZQUFMLENBQWtCLElBQWxCLENBQXVCLEtBQXZCLENBQTZCLGlCQUE3QixFQUFnRCxPQUFoRCxHQUEwRCxDQUExRCxFQUE2RCxLQUE3RCxNQUF3RSxDQUF4RSxFQUEyRSxLQUEzRSxN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QUF2QjtBQUNIO0FBRUosYUFwQkUsRUFvQkEsS0FwQkEsQ0FvQk0sVUFBQyxHQUFELEVBQVM7QUFDZCx3QkFBUSxLQUFSLE9BQWlCLE1BQU0sd0RBQXZCO0FBQ0gsYUF0QkUsQ0FBUDtBQXVCSDtBQXJDSSxLQURXO0FBd0NwQixRQXhDb0Isa0JBd0NiO0FBQ0gsZUFBTztBQUNILHVCQUFXLDBCQUEwQixJQURsQztBQUVILHlCQUFhLHNCQUZWO0FBR0gsNkJBQWlCLG1CQUFtQixpQkFBbkIsQ0FBcUMsaUJBQXJDLEdBQXlELEtBQXpELENBQStELFFBQS9ELElBQTJFLFFBQTNFLEdBQXNGLFNBSHBHO0FBSUgsMkJBQWUsbUJBQW1CLFVBSi9CO0FBS0gsOEJBQWtCLEVBTGY7QUFNSCxpQ0FBcUIsbUJBQW1CLFFBTnJDO0FBT0gsNkJBQWlCO0FBUGQsU0FBUDtBQVNILEtBbERtQjtBQW1EcEIsV0FuRG9CLHFCQW1EVjtBQUNOLFlBQUcsS0FBSyxhQUFMLElBQXNCLENBQUMsS0FBSyxlQUEvQixFQUErQztBQUMzQyxpQkFBSyxlQUFMO0FBQ0g7QUFDSjtBQXZEbUIsQ0FBeEIiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCIkcG5wLnNldHVwKHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQWNjZXB0XCI6IFwiYXBwbGljYXRpb24vanNvbjsgb2RhdGE9dmVyYm9zZVwiXG4gICAgfVxufSk7XG5cbnJlcXVpcmUoJy4uLy4uL21peGlucy90cmFuc2xhdGUnKTtcbnJlcXVpcmUoJy4uLy4uL21peGlucy9wbnAtbWl4aW4nKTtcbnZhciBzcE1peGluID0gcmVxdWlyZSgnLi4vLi4vbWl4aW5zL3NwLW1peGluJyk7XG5cblZ1ZS5jb21wb25lbnQoYGRldGFsaGVzLWFkdm9nYWRvYCwge1xuICAgIGRhdGEoKSB7XG4gICAgICAgIHZhciBsaXN0TmFtZSA9ICdQcm9maXNzaW9uYWlzJztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpc3ROYW1lOiBsaXN0TmFtZSxcbiAgICAgICAgICAgIGxpc3RVUkw6IGAke19zcFBhZ2VDb250ZXh0SW5mby53ZWJTZXJ2ZXJSZWxhdGl2ZVVybH0vbGlzdHMvJHtsaXN0TmFtZX1gLFxuICAgICAgICAgICAgZGV0YWxoZXNBZHZvZ2Fkbzoge30sXG4gICAgICAgICAgICBjdXJyZW50UGFyYW06IG51bGwsXG4gICAgICAgICAgICBlc2NyaXRvcmlvczogW10sXG4gICAgICAgICAgICBpZGlvbWFzOiBbXSxcbiAgICAgICAgICAgIGFyZWFzQXR1YWNhbzogW10sXG4gICAgICAgICAgICBsb2FkZWRBZHZvZ2FkbzogZmFsc2VcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWl4aW5zOiBbdHJhbnNsYXRlTWl4aW4sIHBucE1peGluLCBzcE1peGluXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJkZXRhbGhlcy1hZHZvZ2Fkb1wiIHYtaWY9XCJsb2FkZWRBZHZvZ2Fkb1wiPlxuICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIiFkZXRhbGhlc0Fkdm9nYWRvXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZyB0ZXh0LWNlbnRlciBtYi01IG10LTVcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWxvYWRpbmdcIj48L2k+XG4gICAgICAgICAgICAgICAgPHA+Q2FycmVnYW5kbyBpbmZvcm1hw6fDtWVzLjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgdi1lbHNlLWlmPVwiZGV0YWxoZXNBZHZvZ2Fkby5BdXhUaXBvUHJvZmlzc2lvbmFsLlRpdGxlID09ICdTw7NjaW8oYSknIHx8IGRldGFsaGVzQWR2b2dhZG8uSGVhZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtLTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHAtMCBtLTAgYmctY2luemEtY2xhcm8yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cImdldFBpY3R1cmUoZGV0YWxoZXNBZHZvZ2Fkby5MaW5rSW1hZ2VtKVwiIDphbHQ9XCJkZXRhbGhlc0Fkdm9nYWRvLkZ1bGxOYW1lXCIgY2xhc3M9XCJ3LTEwMFwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBiZy1jaW56YS1jbGFybzJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtMTAgb2Zmc2V0LW1kLTEgcHQtNSBwbC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiL2Fkdm9nYWRvc1wiIGNsYXNzPVwiYmFjay1wYWdlLWxpbmtcIiA6dGl0bGU9XCJpc0VuZ2xpc2ggPyAnQmFjaycgOiAnVm9sdGFyJ1wiPiB7eyBpc0VuZ2xpc2ggPyAnQmFjaycgOiAnVm9sdGFyJyB9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+IHt7IGRldGFsaGVzQWR2b2dhZG8uRnVsbE5hbWUgfX0gPC9oMT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3VidGl0bGVcIj4ge3sgaXNFbmdsaXNoID8gZGV0YWxoZXNBZHZvZ2Fkby5BdXhUaXBvUHJvZmlzc2lvbmFsLlRpdGxlRU4gOiBkZXRhbGhlc0Fkdm9nYWRvLkF1eFRpcG9Qcm9maXNzaW9uYWwuVGl0bGUgfX0gPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtMTIgY29sLXNtLTEyIHAtbWQtMCBjb250YWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1saW5rc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDpcIiBAY2xpY2s9XCJleHBvcnRWQ2FyZChkZXRhbGhlc0Fkdm9nYWRvLklkKVwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwidmNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmVyc2lvbj1cIjEuMVwiIGlkPVwic3ZnLXZjYXJkLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgeD1cIjBweFwiIHk9XCIwcHhcIiB2aWV3Qm94PVwiMCAwIDg4LjMgNTYuMVwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+PGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAsLTk1Mi4zNjIxOClcIj48cGF0aCBkPVwiTTgsOTUyLjRjLTQuNCwwLTgsMy42LTgsOHY0MGMwLDQuNCwzLjYsOCw4LDhoNzJjNC40LDAsOC0zLjYsOC04di00MGMwLTQuNC0zLjYtOC04LThIOHogTTgsOTU2LjRoNzJjMi4zLDAsNCwxLjcsNCw0djQwYzAsMi4zLTEuNyw0LTQsNEg4Yy0yLjMsMC00LTEuNy00LTR2LTQwQzQsOTU4LjEsNS43LDk1Ni40LDgsOTU2LjR6IE0yNSw5NjUuNGMtMy44LDAtNywzLjItNyw3czMuMiw3LDcsN3M3LTMuMiw3LTdTMjguOCw5NjUuNCwyNSw5NjUuNHogTTQ4LDk2Ny40Yy0xLjEsMC0yLDAuOS0yLDJzMC45LDIsMiwyaDI4YzEuMSwwLDItMC45LDItMnMtMC45LTItMi0ySDQ4eiBNMjUsOTY5LjRjMS43LDAsMywxLjMsMywzcy0xLjMsMy0zLDNzLTMtMS4zLTMtM1MyMy4zLDk2OS40LDI1LDk2OS40eiBNNDgsOTc4LjRjLTEuMSwwLTIsMC45LTIsMnMwLjksMiwyLDJoMjhjMS4xLDAsMi0wLjksMi0ycy0wLjktMi0yLTJINDh6IE0yNSw5ODEuNGMtNCwwLTcuNSwxLTEwLjMsMi44Yy0yLjcsMS44LTQuNyw0LjQtNC43LDcuNXYxLjdjMCwxLjEsMC45LDIsMiwyaDI2YzEuMSwwLDItMC45LDItMnYtMS43YzAtMy4xLTItNS44LTQuNy03LjVDMzIuNSw5ODIuNCwyOSw5ODEuNCwyNSw5ODEuNHogTTI1LDk4NS40YzMuMiwwLDYuMiwwLjksOC4xLDIuMmMxLjgsMS4yLDIuNywyLjUsMi44LDMuOEgxNC4xYzAuMS0xLjMsMS0yLjcsMi44LTMuOEMxOC44LDk4Ni4yLDIxLjgsOTg1LjQsMjUsOTg1LjR6IE00OCw5ODkuNGMtMS4xLDAtMiwwLjktMiwyczAuOSwyLDIsMmgyOGMxLjEsMCwyLTAuOSwyLTJzLTAuOS0yLTItMkg0OHpcIiBjbGFzcz1cInN2Zy12Y2FyZC1pY29uLTBcIj48L3BhdGg+PC9nPjwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHYtaWY9XCJkZXRhbGhlc0Fkdm9nYWRvLlVSTExpbmtlZGluXCIgOmhyZWY9XCJkZXRhbGhlc0Fkdm9nYWRvLlVSTExpbmtlZGluLlVybFwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwibGlua2VkaW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9jZXNjb25iYXJyaWV1LmNvbS5ici93cC1jb250ZW50L3RoZW1lcy9zb3V6YWNlc2Nvbi9hc3NldHMvaW1nL2xpbmtlZGluLWljb24ucG5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4ge3sgaXNFbmdsaXNoID8gJ09mZmljZScgOiAnRXNjcml0w7NyaW8nIH19IDwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWZvcj1cImVzY3JpdG9yaW8gaW4gZXNjcml0b3Jpb3NcIj57eyBlc2NyaXRvcmlvLlRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+IEUgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRldGFsaGVzQWR2b2dhZG8uRW1haWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+IFQgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRldGFsaGVzQWR2b2dhZG8uV29ya1Bob25lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic29icmVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG0tMCBtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNSBvZmZzZXQtc20tMSBjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTExIG9mZnNldC1zbS0xIHBlcmZpbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+IHt7IGlzRW5nbGlzaCA/ICdQcm9maWxlJyA6ICdQZXJmaWwnIH19IDwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bW8gZm9udC13ZWlnaHQtYm9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpc0VuZ2xpc2ggPyBkZXRhbGhlc0Fkdm9nYWRvLkFwcmVzZW50YWNhb1Jlc3Vtb0VuIDogZGV0YWxoZXNBZHZvZ2Fkby5BcHJlc2VudGFjYW9SZXN1bW8gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmVzZW50YXRpb25cIiB2LWh0bWw9XCJpc0VuZ2xpc2ggID8gZGV0YWxoZXNBZHZvZ2Fkby5BcHJlc2VudGFjYW9FbiA6IGRldGFsaGVzQWR2b2dhZG8uQXByZXNlbnRhY2FvXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IGNvbC0xMiBzaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMCBvZmZzZXQtc20tMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LXVwcGVyY2FzZSBmb250LXdlaWdodC1ib2xkXCI+IHt7IGlzRW5nbGlzaCA/ICdMYW5ndWFnZXMnIDogJ0lkaW9tYXMnIH19IDwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3Qtc29icmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB2LWZvcj1cIml0ZW0gaW4gaWRpb21hc1wiPnt7IGlzRW5nbGlzaCA/IGl0ZW0uVGl0bGVFTiA6IGl0ZW0uVGl0bGUgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInRleHQtdXBwZXJjYXNlIGZvbnQtd2VpZ2h0LWJvbGRcIj4ge3sgaXNFbmdsaXNoID8gJ1ByYWN0aWNlcyBBcmVhcycgOiAnw4FyZWFzIGRlIEF0dWHDp8OjbycgfX0gPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1zb2JyZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHYtZm9yPVwiaXRlbSBpbiBhcmVhc0F0dWFjYW9cIj57eyBpc0VuZ2xpc2ggPyBpdGVtLlRpdGxlRU4gOiBpdGVtLlRpdGxlIH19PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImRldGFsaGVzQWR2b2dhZG8uRWR1Y2FjYW9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInRleHQtdXBwZXJjYXNlIGZvbnQtd2VpZ2h0LWJvbGRcIj4ge3sgaXNFbmdsaXNoID8gICdGb3JtYXRpb24nIDogJ0Zvcm1hw6fDo28nIH19IDwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaHRtbD1cImlzRW5nbGlzaCA/IGRldGFsaGVzQWR2b2dhZG8uRWR1Y2FjYW9FTiA6IGRldGFsaGVzQWR2b2dhZG8uRWR1Y2FjYW9cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImRldGFsaGVzQWR2b2dhZG8uQXNzb2NpYWNvZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInRleHQtdXBwZXJjYXNlIGZvbnQtd2VpZ2h0LWJvbGQgbXQtNVwiPiB7eyBpc0VuZ2xpc2ggPyAgJ0FGRklMSUFUSU9OUyBBTkQgT1RIRVIgQUNUSVZJVElFUycgOiAnQUZJTElBw4fDlUVTIEUgT1VUUkFTIEFUSVZJREFERVMnIH19IDwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaHRtbD1cImlzRW5nbGlzaCA/IGRldGFsaGVzQWR2b2dhZG8uQXNzb2NpYWNvZXNFbiA6IGRldGFsaGVzQWR2b2dhZG8uQXNzb2NpYWNvZXNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTUgbXQtNVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgxPk9vcHMhPC9oMT5cbiAgICAgICAgICAgICAgICAgICAgPHA+e3sgaXNFbmdsaXNoID8gJ1NvcnJ5LCB3ZSBoYXZlIG5vIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXF1ZXN0ZWQgdGVybS4nIDogJ0Rlc2N1bHBlLCBuw6NvIHRlbW9zIGluZm9ybWHDp8O1ZXMgc29icmUgbyB0ZXJtbyBzb2xpY2l0YWRvLicgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIvYWR2b2dhZG9zXCIgOnRpdGxlPVwiaXNFbmdsaXNoID8gJ0JhY2sgdG8gbGF3eWVycycgOiAnVm9sdGFyIHBhcmEgYWR2b2dhZG9zJ1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBib3JkZXItcHJpbWFyeSB0ZXh0LXVwcGVyY2FzZVwiPlZvbHRhciBwYXJhIGEgcGFnaW5hIGRlIHRvZG9zIG9zIHByb2Zpc3Npb25haXMuPC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgZ2V0SXRlbXMoKSB7XG4gICAgICAgICAgICBkZWJ1Z2dlclxuICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhcmFtID0gd2luZG93LmxvY2F0aW9uO1xuXG4gICAgICAgICAgICBpZih0aGlzLmN1cnJlbnRQYXJhbS5oYXNoKXtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQYXJhbSA9IHRoaXMuY3VycmVudFBhcmFtLmhyZWYuc3BsaXQoL1xcL2Fkdm9nYWRvc1xcLy9naSkucmV2ZXJzZSgpWzBdLnNwbGl0KGA/YClbMF0uc3BsaXQoYCNgKVswXVxuICAgICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhcmFtID0gdGhpcy5jdXJyZW50UGFyYW0uaHJlZi5zcGxpdCgvXFwvYWR2b2dhZG9zXFwvL2dpKS5yZXZlcnNlKClbMF0uc3BsaXQoYD9gKVswXVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJHBucC5zcC53ZWIuZ2V0TGlzdCh0aGlzLmxpc3RVUkwpLml0ZW1zXG4gICAgICAgICAgICAgICAgLnNlbGVjdChgKiwgQXV4VGlwb1Byb2Zpc3Npb25hbC9UaXRsZSwgQXV4VGlwb1Byb2Zpc3Npb25hbC9UaXRsZUVOLCBFc2NyaXRvcmlvL1RpdGxlLCBJZGlvbWEvVGl0bGUsIElkaW9tYS9UaXRsZUVOLCBBdXhBcmVhQXR1YWNhby9UaXRsZSwgQXV4QXJlYUF0dWFjYW8vU2VvVVJMLCBBdXhBcmVhQXR1YWNhby9UaXRsZUVOYClcbiAgICAgICAgICAgICAgICAuZXhwYW5kKGBBdXhUaXBvUHJvZmlzc2lvbmFsLCBFc2NyaXRvcmlvLCBJZGlvbWEsIEF1eEFyZWFBdHVhY2FvYClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGBTZW9VUkwgZXEgJyR7dGhpcy5jdXJyZW50UGFyYW19J2ApXG4gICAgICAgICAgICAgICAgLmdldCgpLnRoZW4oKHJlc3VsdHMpID0+IHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVzY3JpdG9yaW9zID0gcmVzdWx0c1swXS5Fc2NyaXRvcmlvLnJlc3VsdHM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaWRpb21hcyA9IHJlc3VsdHNbMF0uSWRpb21hLnJlc3VsdHM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXJlYXNBdHVhY2FvID0gcmVzdWx0c1swXS5BdXhBcmVhQXR1YWNhby5yZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hY2FvID0gcmVzdWx0c1swXTtcbiAgICAgICAgICAgICAgICAgICAgVnVlLnNldCh0aGlzLCAnZGV0YWxoZXNBZHZvZ2FkbycsIHJlc3VsdHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZEFkdm9nYWRvID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkQWR2b2dhZG8gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBhcHBseUV2ZW50cygpe1xuICAgICAgICAgICAgLy8gZ2V0IHBhZ2UgdGl0bGVcbiAgICAgICAgICAgIHZhciB0aXRsZVBhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDEnKVswXTtcbiAgICAgICAgICAgIC8vIGFsdGVyYW5kbyBvIHRpdHVsbyBkYSBwYWdpbmEgcGFyYSBvIG5vbWUgZG8gcHJvZmlzc2lvbmFsXG4gICAgICAgICAgICB0aXRsZVBhZ2UuaW5uZXJUZXh0ID0gdGhpcy5kZXRhbGhlc0Fkdm9nYWRvLkZ1bGxOYW1lO1xuICAgICAgICAgICAgLy8gaGlkZSBwYWdlIHRpdGxlXG4gICAgICAgICAgICB0aXRsZVBhZ2Uuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIC8vIHZlcmlmaWNhbmRvIHNlIGrDoSBjYXJyZWdvdSBvcyBpdGVuc1xuICAgICAgICAgICAgaWYodGhpcy5sb2FkZWRBZHZvZ2Fkbyl7XG4gICAgICAgICAgICAgICAgLy8gYWx0ZXJhbmRvIG8gdGl0dWxvIGRvIG5hdmVnYWRvclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LnRpdGxlID0gdGhpcy5kZXRhbGhlc0Fkdm9nYWRvLkZ1bGxOYW1lICsgJyB8ICcgKyBkb2N1bWVudC50aXRsZS5zcGxpdCgnfCcpWzFdO1xuICAgICAgICAgICAgICAgICQoJ2xpLmN1cnJlbnQnKS5maW5kKCdzcGFuJykudGV4dCh0aGlzLmRldGFsaGVzQWR2b2dhZG8uRnVsbE5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXRQaWN0dXJlKGltZyl7XG4gICAgICAgICAgICBpZihpbWcpe1xuICAgICAgICAgICAgICAgIHJldHVybiBpbWc7XG4gICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke19zcFBhZ2VDb250ZXh0SW5mby53ZWJTZXJ2ZXJSZWxhdGl2ZVVybH1zdHlsZSBsaWJyYXJ5L2ltYWdlcy9lbXB0eS1waWN0dXJlLnBuZ2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgY3JlYXRlZCgpIHtcbiAgICAgICAgdGhpcy5nZXRJdGVtcygpXG4gICAgfSxcbn0pO1xuXG52YXIgYXBwID0gbmV3IFZ1ZSh7XG4gICAgZWw6IGAjZGV0YWxoZXMtYWR2b2dhZG9gLFxuICAgIHRlbXBsYXRlOiBgPGRldGFsaGVzLWFkdm9nYWRvIC8+YFxufSlcbiIsIndpbmRvdy5wbnBNaXhpbiA9IGZ1bmN0aW9uKCRwbnApe1xuXHR2YXIgcG5wTWl4aW4gPSB7XG5cdFx0bWV0aG9kczoge1xuXHRcdFx0Z2V0Q3VycmVudFVzZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgIHJldHVybiAkcG5wLnNwLndlYi5zaXRlVXNlcnMuZ2V0QnlJZChfc3BQYWdlQ29udGV4dEluZm8udXNlcklkKS5leHBhbmQoJ2dyb3VwcycpLmdldCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzVXNlck1lbWJlck9mOiBmdW5jdGlvbiAoZ3JvdXBOYW1lLCBncm91cHMpe1xuICAgICAgICAgICAgXHRyZXR1cm4gW10uY29uY2F0KGdyb3Vwcykuc29tZShmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICAgICAgICAgIFx0XHRyZXR1cm4gZ3JvdXAuVGl0bGUgPT09IGdyb3VwTmFtZTtcbiAgICAgICAgICAgIFx0fSk7XG4gICAgICAgICAgICB9LFxuXHRcdFx0Z2V0UmVsYXRpdmVVcmw6IGZ1bmN0aW9uKGxpbmspe1xuXHRcdFx0XHRyZXR1cm4gJHBucC51dGlsLm1ha2VVcmxBYnNvbHV0ZShsaW5rKS5yZXBsYWNlKGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3RuYW1lLCAnJylcblx0XHRcdH0sXG5cdFx0XHR0cnVuY2F0ZVN0cmluZzogZnVuY3Rpb24oc3RyLCBsZW5ndGgpe1xuXHRcdFx0XHRyZXR1cm4gIXN0ciA/IFwiXCIgOiBzdHIubGVuZ3RoID4gbGVuZ3RoID8gc3RyLnN1YnN0cmluZygwLCBsZW5ndGggLSAzKSArICcuLi4nIDogc3RyXG5cdFx0XHR9LFxuXHRcdFx0Z2V0UGljdHVyZTogZnVuY3Rpb24odXNlcil7XG5cdFx0XHRcdHJldHVybiBfc3BQYWdlQ29udGV4dEluZm8ud2ViQWJzb2x1dGVVcmwgKyAnL19sYXlvdXRzLzE1L3VzZXJwaG90by5hc3B4P3NpemU9TCZ1c2VybmFtZT0nK3VzZXIrJydcblx0XHRcdH0sXG5cdFx0XHRnZXRMaXN0OiBmdW5jdGlvbihzZXR0aW5ncykge1xuXHRcdFx0XHR2YXIgcmVxdWVzdCA9ICRwbnAuc3Aud2ViLmdldExpc3Qoc2V0dGluZ3MubGlzdFVybCkuaXRlbXNcblx0XHRcdFx0c2V0dGluZ3Muc2VsZWN0ID8gXHRyZXF1ZXN0LnNlbGVjdChzZXR0aW5ncy5zZWxlY3QpIDogbnVsbFxuXHRcdFx0XHRzZXR0aW5ncy5vcmRlckJ5ID8gXHRyZXF1ZXN0Lm9yZGVyQnkoc2V0dGluZ3Mub3JkZXJCeSwgc2V0dGluZ3Mub3JkZXJCeUFzYykgOiBudWxsXG5cdFx0XHRcdHNldHRpbmdzLmZpbHRlciA/IFx0cmVxdWVzdC5maWx0ZXIoc2V0dGluZ3MuZmlsdGVyKSA6IG51bGxcblx0XHRcdFx0c2V0dGluZ3MuZXhwYW5kID8gXHRyZXF1ZXN0LmV4cGFuZChzZXR0aW5ncy5leHBhbmQpIDogbnVsbFxuXHRcdFx0XHRzZXR0aW5ncy50b3AgPyBcdFx0cmVxdWVzdC5leHBhbmQoc2V0dGluZ3MudG9wKSA6IG51bGxcblxuXHRcdFx0XHRyZXR1cm4gcmVxdWVzdC5nZXQoKVxuXHRcdFx0fSxcblx0XHRcdGdldFNFT1VybChwYXJhbWV0cm8sIHVybCkge1xuXHRcdFx0XHQvLyBwYXJhbWV0cm8gLSBjYXNvIGVzdGVqYSBzZW0gU0VPVXJsXG5cdFx0XHRcdC8vIHVybCAtIHVybCBkYSBww6FnaW5hIGrDoSBjb20gU0VPVXJsLCBqw6EgcXVlIHR1ZG8gZGVwb2lzIGRlbGEgw6kgcGFyYW1ldHJvIGRlIFNFT1VybCAoJy9saW5rZGFwYWdpbmEvJylcblx0XHRcdFx0cmV0dXJuICRwbnAudXRpbC5nZXRVcmxQYXJhbUJ5TmFtZShwYXJhbWV0cm8pIHx8IGxvY2F0aW9uLmhyZWYuc3BsaXQoYC8ke3VybH0vYCkucmV2ZXJzZSgpWzBdLnNwbGl0KCcjJylbMF0uc3BsaXQoJz8nKVswXTtcblx0XHRcdH0sXG5cdFx0XHR0aHJlYXRFcnJvcihlcnIsIG1zZyl7XG5cdFx0XHRcdHJldHVybiBzd2FsKHtcblx0XHRcdFx0XHR0eXBlOiAnZXJyb3InLFxuXHRcdFx0XHRcdHRleHQ6IG1zZyB8fCBlcnIsXG5cdFx0XHRcdFx0dGl0bGU6IGBPb3BzIWBcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBwbnBNaXhpbjtcbn0oJHBucClcbiIsInZhciB0cmFuc2xhdGVNaXhpbiA9IHJlcXVpcmUoJy4vdHJhbnNsYXRlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIG1peGluczogW3RyYW5zbGF0ZU1peGluXSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIHRocmVhdEVycm9yKG1zZywgZGF0YSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihhcmd1bWVudHMpO1xuICAgICAgICAgICAgdmFyIGRlZmF1bHRNc2cgPSAhdGhpcy5pc0VuZ2xpc2ggPyBcIk9jb3JyZXUgdW0gZXJyb1wiIDogXCJBbiBlcnJvciBoYXMgb2N1cnJlZFwiXG5cbiAgICAgICAgICAgIHJldHVybiBzd2FsKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJFcnJvXCIsXG4gICAgICAgICAgICAgICAgdGV4dDogbXNnIHx8IGRlZmF1bHRNc2csXG4gICAgICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xvbmUob2JqKSB7XG4gICAgICAgICAgICBpZiAobnVsbCA9PSBvYmogfHwgXCJvYmplY3RcIiAhPSB0eXBlb2Ygb2JqKSByZXR1cm4gb2JqO1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldEVtcHR5SXRlbShsaXN0RmllbGRzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZShsaXN0RmllbGRzKTtcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGVSZXF1aXJlZEZpZWxkKGZpZWxkcykge1xuICAgICAgICAgICAgcmV0dXJuICFPYmplY3Qua2V5cyhmaWVsZHMpLnNvbWUoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhZmllbGRzW2tleV0uVmFsdWUgJiYgZmllbGRzW2tleV0uUmVxdWlyZWQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBnZXRTRU9VcmwocGFyYW1ldHJvLCB1cmwpIHtcbiAgICAgICAgICAgIC8vIHBhcmFtZXRybyAtIGNhc28gZXN0ZWphIHNlbSBTRU9VcmxcbiAgICAgICAgICAgIC8vIHVybCAtIHVybCBkYSBww6FnaW5hIGrDoSBjb20gU0VPVXJsLCBqw6EgcXVlIHR1ZG8gZGVwb2lzIGRlbGEgw6kgcGFyYW1ldHJvIGRlIFNFT1VybCAoJy9saW5rZGFwYWdpbmEvJylcbiAgICAgICAgICAgIHJldHVybiAkcG5wLnV0aWwuZ2V0VXJsUGFyYW1CeU5hbWUocGFyYW1ldHJvKSB8fCBsb2NhdGlvbi5ocmVmLnNwbGl0KGAvJHt1cmx9L2ApLnJldmVyc2UoKVswXS5zcGxpdCgnIycpWzBdLnNwbGl0KCc/JylbMF07XG4gICAgICAgIH0sXG4gICAgICAgIGdldEludmFsaWRGaWVsZHMoZmllbGRzKSB7XG4gICAgICAgICAgICBsZXQgbXNnc0Vycm8gPSBbXTtcbiAgICAgICAgICAgIGxldCBtc2dPYnJpZ2F0b3JpbyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBmaWVsZHMgPSBPYmplY3Qua2V5cyhmaWVsZHMpLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIGZpZWxkID0gZmllbGRzW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLkludGVybmFsTmFtZSA9PT0gJ0VtYWlsJyAmJiBmaWVsZC5WYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZW1haWxWYWxpZG8gPSB0aGlzLnZhbGlkYXRlRW1haWwoZmllbGQuVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWVtYWlsVmFsaWRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtc2dzRXJyby5wdXNoKGAkeyF0aGlzLmlzRW5nbGlzaCA/ICdPIGUtbWFpbCcgOiAnVGhlIGVtYWlsJ30gPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+JHtmaWVsZC5WYWx1ZX08L3NwYW4+ICR7IXRoaXMuaXNFbmdsaXNoID8gJ8OpIGludsOhbGlkbycgOiAnaXMgaW52YWxpZCd9YClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWVtYWlsVmFsaWRvO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuUmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLlR5cGVBc1N0cmluZyA9PT0gJ0xvb2t1cE11bHRpJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbiA9ICEoZmllbGQuVmFsdWUgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24gPSAhZmllbGQuVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbiAmJiBtc2dPYnJpZ2F0b3JpbyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbXNnT2JyaWdhdG9yaW8gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9tc2dzRXJyby5wdXNoKGBPIGNhbXBvICR7ZmllbGQuVGl0bGV9IMOpIG9icmlnYXTDs3Jpb2ApXG4gICAgICAgICAgICAgICAgICAgICAgICBtc2dzRXJyby5wdXNoKCF0aGlzLmlzRW5nbGlzaCA/ICdQcmVlbmNoYSBvcyBjYW1wb3Mgb2JyaWdhdMOzcmlvcycgOiAnRmlsbCBpbiB0aGUgcmVxdWlyZWQgZmllbGRzJylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgaWYgKG1zZ09icmlnYXRvcmlvID49IDEpIHtcbiAgICAgICAgICAgICAgICAvL2FsZXJ0KCdQcmVlbmNoYSBvcyBjYW1wb3Mgb2JyaWdhdMOzcmlvcycpOyAgICAgXG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbXNnc0Vycm8sXG4gICAgICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGV4cG9ydFZDYXJkKElEKSB7XG4gICAgICAgICAgICB2YXIgRiA9IGRvY3VtZW50LmZvcm1zWzBdO1xuICAgICAgICAgICAgRi5hY3Rpb24gPSBcIi9fbGF5b3V0cy8xNS9TaW1iaW9YLlNQMjAxMy5TUEV4cG9ydGVyL0V4cG9ydFRvVkNhcmQuYXNoeFwiO1xuICAgICAgICAgICAgRi5fX1ZJRVdTVEFURS5uYW1lID0gJ05PVklFV1NUQVRFJztcbiAgICAgICAgICAgIEYuX19WSUVXU1RBVEUudmFsdWUgPSBcIkxpc3Q6UHJvZmlzc2lvbmFpcztJRDpcIiArIElEICsgXCI7TGlzdFVSTDo7XCI7XG4gICAgICAgICAgICBGLm1ldGhvZCA9ICdQT1NUJztcbiAgICAgICAgICAgIEYub25zdWJtaXQgPSBmdW5jdGlvbigpIHt9O1xuICAgICAgICAgICAgRi5zdWJtaXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXhwb3J0UERGKGVsZW1lbnQsIGZpbGVOYW1lKSB7XG4gICAgICAgICAgICAkKGAjJHtlbGVtZW50fWApLnNob3coKVxuXG4gICAgICAgICAgICAvKnZhciBjYWNoZV93aWR0aCA9ICQoZWxlbWVudCkud2lkdGgoKTsgLy9DcmlhZG8gdW0gY2FjaGUgZG8gQ1NTXG4gICAgICAgICAgICB2YXIgYTQgID1bIDU5NS4yOCwgIDg0MS44OV07IC8vIFdpZGh0IGUgSGVpZ2h0IGRlIHVtYSBmb2xoYSBhNFxuXG4gICAgICAgICAgICAvLyBTZXRhciBvIHdpZHRoIGRhIGRpdiBubyBmb3JtYXRvIGE0XG4gICAgICAgICAgICAkKGVsZW1lbnQpLndpZHRoKChhNFswXSoxLjMzMzMzKSAtODApLmNzcygnbWF4LXdpZHRoJywnbm9uZScpO1xuICAgICAgICAgICAgLy8gQXF1aSBlbGUgY3JpYSBhIGltYWdlbSBlIGNyaWEgbyBwZGZcbiAgICAgICAgICAgIGh0bWwyY2FudmFzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWxlbWVudCkpLnRoZW4oY2FudmFzID0+IHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gICAgICAgICAgICAgICAgdmFyIGltZyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIiwxLjApOyAgXG4gICAgICAgICAgICAgICAgdmFyIGRvYyA9IG5ldyBqc1BERih7dW5pdDoncHgnLCBmb3JtYXQ6J2E0J30pO1xuICAgICAgICAgICAgICAgIGRvYy5hZGRJbWFnZShpbWcsICdKUEVHJywgMjAsIDIwKTtcbiAgICAgICAgICAgICAgICBkb2Muc2F2ZShgRG93bmxvYWQgZGUgUERGIC0gJHtmaWxlTmFtZX0ucGRmYCk7XG4gICAgICAgICAgICAgICAgLy9SZXRvcm5hIGFvIENTUyBub3JtYWxcbiAgICAgICAgICAgICAgICAkKGVsZW1lbnQpLndpZHRoKGNhY2hlX3dpZHRoKTtcbiAgICAgICAgICAgICAgICAkKGVsZW1lbnQpLmhpZGUoKVxuICAgICAgICAgICAgfSk7Ki9cblxuICAgICAgICAgICAgdmFyIHF1b3RlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQpO1xuICAgICAgICAgICAgaHRtbDJjYW52YXMocXVvdGVzKS50aGVuKChjYW52YXMpID0+IHtcbiAgICAgICAgICAgICAgICAvLyEgTUFLRSBZT1VSIFBERlxuICAgICAgICAgICAgICAgIHZhciBwZGYgPSBuZXcganNQREYoJ3AnLCAncHQnLCAnbGV0dGVyJyk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBxdW90ZXMuY2xpZW50SGVpZ2h0IC8gOTgwOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgLy8hIFRoaXMgaXMgYWxsIGp1c3QgaHRtbDJjYW52YXMgc3R1ZmZcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNyY0ltZyA9IGNhbnZhcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNYID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNZID0gOTgwICogaTsgLy8gc3RhcnQgOTgwIHBpeGVscyBkb3duIGZvciBldmVyeSBuZXcgcGFnZVxuICAgICAgICAgICAgICAgICAgICB2YXIgc1dpZHRoID0gOTgwO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc0hlaWdodCA9IDk4MDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRYID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRZID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRXaWR0aCA9IDk4MDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRIZWlnaHQgPSA5ODA7XG5cbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9uZVBhZ2VDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgICAgICAgICAgICAgICAgICBvbmVQYWdlQ2FudmFzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCA5ODApO1xuICAgICAgICAgICAgICAgICAgICBvbmVQYWdlQ2FudmFzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgOTgwKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN0eCA9IG9uZVBhZ2VDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZGV0YWlscyBvbiB0aGlzIHVzYWdlIG9mIHRoaXMgZnVuY3Rpb246IFxuICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ2FudmFzX0FQSS9UdXRvcmlhbC9Vc2luZ19pbWFnZXMjU2xpY2luZ1xuICAgICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKHNyY0ltZywgc1gsIHNZLCBzV2lkdGgsIHNIZWlnaHQsIGRYLCBkWSwgZFdpZHRoLCBkSGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjYW52YXNEYXRhVVJMID0gb25lUGFnZUNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIiwgMS4wKTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSBvbmVQYWdlQ2FudmFzLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gb25lUGFnZUNhbnZhcy5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8hIElmIHdlJ3JlIG9uIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIGZpcnN0IHBhZ2UsXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZCBhbm90aGVyIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZGYuYWRkUGFnZSg2MTIsIDc5MSk7IC8vOC41XCIgeCAxMVwiIGluIHB0cyAoaW4qNzIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8hIG5vdyB3ZSBkZWNsYXJlIHRoYXQgd2UncmUgd29ya2luZyBvbiB0aGF0IHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgcGRmLnNldFBhZ2UoaSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAvLyEgbm93IHdlIGFkZCBjb250ZW50IHRvIHRoYXQgcGFnZSFcbiAgICAgICAgICAgICAgICAgICAgcGRmLmFkZEltYWdlKGNhbnZhc0RhdGFVUkwsICdQTkcnLCAxMCwgMTAsICh3aWR0aCAqIC42MiksIChoZWlnaHQgKiAuNjIpKTtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyEgYWZ0ZXIgdGhlIGZvciBsb29wIGlzIGZpbmlzaGVkIHJ1bm5pbmcsIHdlIHNhdmUgdGhlIHBkZi5cbiAgICAgICAgICAgICAgICBwZGYuc2F2ZShgJHtmaWxlTmFtZX0ucGRmYCk7XG4gICAgICAgICAgICAgICAgJChgIyR7ZWxlbWVudH1gKS5oaWRlKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0ZUVtYWlsKGVtYWlsID0gJycpIHtcbiAgICAgICAgICAgIGxldCB1c3VhcmlvID0gZW1haWwuc3Vic3RyaW5nKDAsIGVtYWlsLmluZGV4T2YoXCJAXCIpKTtcbiAgICAgICAgICAgIGxldCBkb21pbmlvID0gZW1haWwuc3Vic3RyaW5nKGVtYWlsLmluZGV4T2YoXCJAXCIpICsgMSwgZW1haWwubGVuZ3RoKTtcblxuICAgICAgICAgICAgaWYgKCh1c3VhcmlvLmxlbmd0aCA+PSAxKSAmJlxuICAgICAgICAgICAgICAgIChkb21pbmlvLmxlbmd0aCA+PSAzKSAmJlxuICAgICAgICAgICAgICAgICh1c3VhcmlvLnNlYXJjaChcIkBcIikgPT0gLTEpICYmXG4gICAgICAgICAgICAgICAgKGRvbWluaW8uc2VhcmNoKFwiQFwiKSA9PSAtMSkgJiZcbiAgICAgICAgICAgICAgICAodXN1YXJpby5zZWFyY2goXCIgXCIpID09IC0xKSAmJlxuICAgICAgICAgICAgICAgIChkb21pbmlvLnNlYXJjaChcIiBcIikgPT0gLTEpICYmXG4gICAgICAgICAgICAgICAgKGRvbWluaW8uc2VhcmNoKFwiLlwiKSAhPSAtMSkgJiZcbiAgICAgICAgICAgICAgICAoZG9taW5pby5pbmRleE9mKFwiLlwiKSA+PSAxKSAmJlxuICAgICAgICAgICAgICAgIChkb21pbmlvLmxhc3RJbmRleE9mKFwiLlwiKSA8IGRvbWluaW8ubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBkYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGV0cmFzQWxmYWJldG86IFsnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ08nLCAnUCcsICdRJywgJ1InLCAnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJ10sXG4gICAgICAgICAgICBtZXNlczogW3tcbiAgICAgICAgICAgICAgICAgICAgVGl0bGU6ICdKYW5laXJvJyxcbiAgICAgICAgICAgICAgICAgICAgVGl0bGVFTjogJ0phbnVhcnknXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBgRmV2ZXJlaXJvYCxcbiAgICAgICAgICAgICAgICAgICAgVGl0bGVFTjogYEZlYnJ1YXJ5YFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBUaXRsZTogYE1hcsOnb2AsXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlRU46IGBNYXJjaGBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgVGl0bGU6IGBBYnJpbGAsXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlRU46IGBBcHJpbGBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgVGl0bGU6IGBNYWlvYCxcbiAgICAgICAgICAgICAgICAgICAgVGl0bGVFTjogYE1heWBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgVGl0bGU6IGBKdW5ob2AsXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlRU46IGBKdW5lYFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBUaXRsZTogYEp1bGhvYCxcbiAgICAgICAgICAgICAgICAgICAgVGl0bGVFTjogYEp1bHlgXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBgQWdvc3RvYCxcbiAgICAgICAgICAgICAgICAgICAgVGl0bGVFTjogYEF1Z3VzdGBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgVGl0bGU6IGBTZXRlbWJyb2AsXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlRU46IGBTZXB0ZW1iZXJgXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBgT3V0dWJyb2AsXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlRU46IGBPY3RvYmVyYFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBUaXRsZTogYE5vdmVtYnJvYCxcbiAgICAgICAgICAgICAgICAgICAgVGl0bGVFTjogYE5vdmVtYmVyYFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBUaXRsZTogYERlemVtYnJvYCxcbiAgICAgICAgICAgICAgICAgICAgVGl0bGVFTjogYERlY2VtYmVyYFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIH0sXG59Iiwid2luZG93LnRyYW5zbGF0ZU1peGluID0ge1xuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgY2hhbmdlTGFuZ3VhZ2UodmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChDdXJyZW50TGFuZ3VhZ2VEZWNpbWFsID09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICB2YXIgb25lWWVhciA9IG5ldyBEYXRlKHRvZGF5LmdldFRpbWUoKSArIDM2NSAqIDI0ICogNjAgKiA2MCAqIDEwMDApO1xuICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gXCJsY2lkPVwiICsgdmFsdWUgKyBcIjtwYXRoPS87ZXhwaXJlcz1cIiArIG9uZVllYXIudG9HTVRTdHJpbmcoKTtcbiAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKVxuICAgICAgICB9LFxuICAgICAgICBjaGFuZ2VQYWdlVGl0bGUoKXtcbiAgICAgICAgICAgIHJldHVybiAkcG5wLnNwLndlYi5nZXRMaXN0KHRoaXMubGlicmFyeVBhZ2VzVVJMKS5pdGVtc1xuICAgICAgICAgICAgICAgIC5nZXRCeUlkKHRoaXMuaWRDdXJyZW50UGFnZSlcbiAgICAgICAgICAgICAgICAuc2VsZWN0KGBJZCwgVGl0bGUsIFRpdGxlRU4sIERlc2NyaWNhbywgRGVzY3JpY2FvRU4sIElzRGlzcGApXG4gICAgICAgICAgICAgICAgLmdldCgpLnRoZW4oKHBhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgVnVlLnNldCh0aGlzLCAnaW5mb3NDdXJyZW50UGFnZScsIHBhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBpZighcGFnZS5Jc0Rpc3Ape1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC50aXRsZSA9IHRoaXMuaXNFbmdsaXNoID8gJ0xvYWRpbmcuLi4nOiAnQ2FycmVnYW5kby4uLic7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmlzRW5nbGlzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHBhZ2UuVGl0bGUgPT0gbnVsbCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnRpdGxlID0gdGhpcy5jdXJyZW50VGl0bGVCcm93c2VyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC50aXRsZSA9IGAke3BhZ2UuVGl0bGVFTn0gfCAke3RoaXMuY3VycmVudFRpdGxlQnJvd3Nlcn1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC50aXRsZSA9IGAke3BhZ2UuVGl0bGV9IHwgJHt0aGlzLmN1cnJlbnRUaXRsZUJyb3dzZXJ9YFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRJbmZvc1BhZ2UgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke2VyciAtICdFcnJvIGFvIGNhcnJlZ2FyIGluZm9ybWHDp8O1ZXMgZGEgYmlibGlvdGVjYSBkZSBww6FnaW5hcy4nfWApXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlzRW5nbGlzaDogQ3VycmVudExhbmd1YWdlRGVjaW1hbCA9PSAxMDMzLFxuICAgICAgICAgICAgY3VycmVudExhbmc6IEN1cnJlbnRMYW5ndWFnZURlY2ltYWwsXG4gICAgICAgICAgICBsaWJyYXJ5UGFnZXNVUkw6IF9zcFBhZ2VDb250ZXh0SW5mby5zZXJ2ZXJSZXF1ZXN0UGF0aC50b0xvY2FsZUxvd2VyQ2FzZSgpLm1hdGNoKC9wYWdlcy9pKSA/ICcvcGFnZXMnIDogJ3BhZ2luYXMnLFxuICAgICAgICAgICAgaWRDdXJyZW50UGFnZTogX3NwUGFnZUNvbnRleHRJbmZvLnBhZ2VJdGVtSWQsXG4gICAgICAgICAgICBpbmZvc0N1cnJlbnRQYWdlOiB7fSxcbiAgICAgICAgICAgIGN1cnJlbnRUaXRsZUJyb3dzZXI6IF9zcFBhZ2VDb250ZXh0SW5mby53ZWJUaXRsZSxcbiAgICAgICAgICAgIGxvYWRlZEluZm9zUGFnZTogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGNyZWF0ZWQoKSB7XG4gICAgICAgIGlmKHRoaXMuaWRDdXJyZW50UGFnZSAmJiAhdGhpcy5sb2FkZWRJbmZvc1BhZ2Upe1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VQYWdlVGl0bGUoKVxuICAgICAgICB9XG4gICAgfSxcbn0iXX0=\n"],"file":"detalhes-advogado.js"}