mirror of
https://github.com/frappe/books.git
synced 2024-11-14 17:34:04 +00:00
2729 lines
691 KiB
JavaScript
2729 lines
691 KiB
JavaScript
/******/ (function(modules) { // webpackBootstrap
|
|
/******/ // The module cache
|
|
/******/ var installedModules = {};
|
|
/******/
|
|
/******/ // The require function
|
|
/******/ function __webpack_require__(moduleId) {
|
|
/******/
|
|
/******/ // Check if module is in cache
|
|
/******/ if(installedModules[moduleId]) {
|
|
/******/ return installedModules[moduleId].exports;
|
|
/******/ }
|
|
/******/ // Create a new module (and put it into the cache)
|
|
/******/ var module = installedModules[moduleId] = {
|
|
/******/ i: moduleId,
|
|
/******/ l: false,
|
|
/******/ exports: {}
|
|
/******/ };
|
|
/******/
|
|
/******/ // Execute the module function
|
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
/******/
|
|
/******/ // Flag the module as loaded
|
|
/******/ module.l = true;
|
|
/******/
|
|
/******/ // Return the exports of the module
|
|
/******/ return module.exports;
|
|
/******/ }
|
|
/******/
|
|
/******/
|
|
/******/ // expose the modules object (__webpack_modules__)
|
|
/******/ __webpack_require__.m = modules;
|
|
/******/
|
|
/******/ // expose the module cache
|
|
/******/ __webpack_require__.c = installedModules;
|
|
/******/
|
|
/******/ // define getter function for harmony exports
|
|
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|
/******/ if(!__webpack_require__.o(exports, name)) {
|
|
/******/ Object.defineProperty(exports, name, {
|
|
/******/ configurable: false,
|
|
/******/ enumerable: true,
|
|
/******/ get: getter
|
|
/******/ });
|
|
/******/ }
|
|
/******/ };
|
|
/******/
|
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
/******/ __webpack_require__.n = function(module) {
|
|
/******/ var getter = module && module.__esModule ?
|
|
/******/ function getDefault() { return module['default']; } :
|
|
/******/ function getModuleExports() { return module; };
|
|
/******/ __webpack_require__.d(getter, 'a', getter);
|
|
/******/ return getter;
|
|
/******/ };
|
|
/******/
|
|
/******/ // Object.prototype.hasOwnProperty.call
|
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|
/******/
|
|
/******/ // __webpack_public_path__
|
|
/******/ __webpack_require__.p = "/";
|
|
/******/
|
|
/******/ // Load entry module and return exports
|
|
/******/ return __webpack_require__(__webpack_require__.s = 4);
|
|
/******/ })
|
|
/************************************************************************/
|
|
/******/ ([
|
|
/* 0 */
|
|
/***/ (function(module, exports) {
|
|
|
|
module.exports = {
|
|
async init() {
|
|
if (this._initialized) return;
|
|
this.init_config();
|
|
this.init_globals();
|
|
this._initialized = true;
|
|
},
|
|
|
|
init_config() {
|
|
this.config = {
|
|
backend: 'sqlite',
|
|
port: 8000
|
|
};
|
|
},
|
|
|
|
init_globals() {
|
|
this.meta_cache = {};
|
|
this.docs = {};
|
|
this.flags = {
|
|
cache_docs: false
|
|
}
|
|
},
|
|
|
|
add_to_cache(doc) {
|
|
if (!this.flags.cache_docs) return;
|
|
|
|
// add to `docs` cache
|
|
if (doc.doctype && doc.name) {
|
|
if (!this.docs[doc.doctype]) {
|
|
this.docs[doc.doctype] = {};
|
|
}
|
|
this.docs[doc.doctype][doc.name] = doc;
|
|
}
|
|
},
|
|
|
|
get_doc_from_cache(doctype, name) {
|
|
if (this.docs[doctype] && this.docs[doctype][name]) {
|
|
return this.docs[doctype][name];
|
|
}
|
|
},
|
|
|
|
get_meta(doctype) {
|
|
if (!this.meta_cache[doctype]) {
|
|
this.meta_cache[doctype] = new (this.models.get_meta_class(doctype))(this.models.get('DocType', doctype));
|
|
}
|
|
return this.meta_cache[doctype];
|
|
},
|
|
|
|
init_controller(doctype, module) {
|
|
doctype = this.slug(doctype);
|
|
this.models.controllers[doctype] = module[doctype];
|
|
this.models.meta_classes[doctype] = module[doctype + '_meta'];
|
|
},
|
|
|
|
async get_doc(data, name) {
|
|
if (typeof data==='string' && typeof name==='string') {
|
|
let doc = this.get_doc_from_cache(data, name);
|
|
if (!doc) {
|
|
let controller_class = this.models.get_controller(data);
|
|
doc = new controller_class({doctype:data, name: name});
|
|
await doc.load();
|
|
this.add_to_cache(doc);
|
|
}
|
|
return doc;
|
|
} else {
|
|
let controller_class = this.models.get_controller(data.doctype);
|
|
var doc = new controller_class(data);
|
|
}
|
|
return doc;
|
|
},
|
|
|
|
async get_new_doc(doctype) {
|
|
let doc = await frappe.get_doc({doctype: doctype});
|
|
doc.set_name();
|
|
doc.__not_inserted = true;
|
|
this.add_to_cache(doc);
|
|
return doc;
|
|
},
|
|
|
|
async insert(data) {
|
|
const doc = await this.get_doc(data);
|
|
return await doc.insert();
|
|
},
|
|
|
|
login(user='guest', user_key) {
|
|
this.session = new this._session.Session(user);
|
|
if (user && user_key) {
|
|
this.authenticate(user_key);
|
|
}
|
|
},
|
|
|
|
close() {
|
|
this.db.close();
|
|
|
|
if (this.server) {
|
|
this.server.close();
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
/* 1 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
|
|
class BaseControl {
|
|
constructor(docfield, parent) {
|
|
Object.assign(this, docfield);
|
|
if (!this.fieldname) {
|
|
this.fieldname = frappe.slug(this.label);
|
|
}
|
|
this.parent = parent;
|
|
if (this.setup) {
|
|
this.setup();
|
|
}
|
|
}
|
|
|
|
bind(doc) {
|
|
this.doc = doc;
|
|
|
|
this.doc.add_handler(this.fieldname, () => {
|
|
this.set_doc_value();
|
|
});
|
|
|
|
this.set_doc_value();
|
|
}
|
|
|
|
refresh() {
|
|
this.make();
|
|
this.set_doc_value();
|
|
}
|
|
|
|
set_doc_value() {
|
|
if (this.doc) {
|
|
this.set_input_value(this.doc.get(this.fieldname));
|
|
}
|
|
}
|
|
|
|
make() {
|
|
if (!this.form_group) {
|
|
this.make_form_group();
|
|
this.make_label();
|
|
this.make_input();
|
|
this.set_input_name();
|
|
this.make_description();
|
|
this.bind_change_event();
|
|
}
|
|
}
|
|
|
|
make_form_group() {
|
|
this.form_group = frappe.ui.add('div', 'form-group', this.parent);
|
|
}
|
|
|
|
make_label() {
|
|
this.label_element = frappe.ui.add('label', null, this.form_group);
|
|
this.label_element.textContent = this.label;
|
|
}
|
|
|
|
make_input() {
|
|
this.input = frappe.ui.add('input', 'form-control', this.form_group);
|
|
}
|
|
|
|
set_input_name() {
|
|
this.input.setAttribute('name', this.fieldname);
|
|
}
|
|
|
|
make_description() {
|
|
if (this.description) {
|
|
this.description_element = frappe.ui.add('small', 'form-text text-muted', this.form_group);
|
|
this.description_element.textContent = this.description;
|
|
}
|
|
}
|
|
|
|
set_input_value(value) {
|
|
if (value === undefined || value === null) {
|
|
value = '';
|
|
}
|
|
this.input.value = value;
|
|
}
|
|
|
|
async get_input_value() {
|
|
return await this.parse(this.input.value);
|
|
}
|
|
|
|
async parse(value) {
|
|
return value;
|
|
}
|
|
|
|
async validate(value) {
|
|
return value;
|
|
}
|
|
|
|
bind_change_event() {
|
|
this.input.addEventListener('change', (e) => this.handle_change(e));
|
|
}
|
|
|
|
async handle_change(e) {
|
|
let value = await this.get_input_value();
|
|
value = await this.validate(value);
|
|
await this.doc.set(this.fieldname, value);
|
|
}
|
|
}
|
|
|
|
module.exports = BaseControl;
|
|
|
|
/***/ }),
|
|
/* 2 */
|
|
/***/ (function(module, exports) {
|
|
|
|
// shim for using process in browser
|
|
var process = module.exports = {};
|
|
|
|
// cached from whatever global is present so that test runners that stub it
|
|
// don't break things. But we need to wrap it in a try catch in case it is
|
|
// wrapped in strict mode code which doesn't define any globals. It's inside a
|
|
// function because try/catches deoptimize in certain engines.
|
|
|
|
var cachedSetTimeout;
|
|
var cachedClearTimeout;
|
|
|
|
function defaultSetTimout() {
|
|
throw new Error('setTimeout has not been defined');
|
|
}
|
|
function defaultClearTimeout () {
|
|
throw new Error('clearTimeout has not been defined');
|
|
}
|
|
(function () {
|
|
try {
|
|
if (typeof setTimeout === 'function') {
|
|
cachedSetTimeout = setTimeout;
|
|
} else {
|
|
cachedSetTimeout = defaultSetTimout;
|
|
}
|
|
} catch (e) {
|
|
cachedSetTimeout = defaultSetTimout;
|
|
}
|
|
try {
|
|
if (typeof clearTimeout === 'function') {
|
|
cachedClearTimeout = clearTimeout;
|
|
} else {
|
|
cachedClearTimeout = defaultClearTimeout;
|
|
}
|
|
} catch (e) {
|
|
cachedClearTimeout = defaultClearTimeout;
|
|
}
|
|
} ())
|
|
function runTimeout(fun) {
|
|
if (cachedSetTimeout === setTimeout) {
|
|
//normal enviroments in sane situations
|
|
return setTimeout(fun, 0);
|
|
}
|
|
// if setTimeout wasn't available but was latter defined
|
|
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
|
|
cachedSetTimeout = setTimeout;
|
|
return setTimeout(fun, 0);
|
|
}
|
|
try {
|
|
// when when somebody has screwed with setTimeout but no I.E. maddness
|
|
return cachedSetTimeout(fun, 0);
|
|
} catch(e){
|
|
try {
|
|
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
|
|
return cachedSetTimeout.call(null, fun, 0);
|
|
} catch(e){
|
|
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
|
|
return cachedSetTimeout.call(this, fun, 0);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
function runClearTimeout(marker) {
|
|
if (cachedClearTimeout === clearTimeout) {
|
|
//normal enviroments in sane situations
|
|
return clearTimeout(marker);
|
|
}
|
|
// if clearTimeout wasn't available but was latter defined
|
|
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
|
|
cachedClearTimeout = clearTimeout;
|
|
return clearTimeout(marker);
|
|
}
|
|
try {
|
|
// when when somebody has screwed with setTimeout but no I.E. maddness
|
|
return cachedClearTimeout(marker);
|
|
} catch (e){
|
|
try {
|
|
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
|
|
return cachedClearTimeout.call(null, marker);
|
|
} catch (e){
|
|
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
|
|
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
|
|
return cachedClearTimeout.call(this, marker);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
var queue = [];
|
|
var draining = false;
|
|
var currentQueue;
|
|
var queueIndex = -1;
|
|
|
|
function cleanUpNextTick() {
|
|
if (!draining || !currentQueue) {
|
|
return;
|
|
}
|
|
draining = false;
|
|
if (currentQueue.length) {
|
|
queue = currentQueue.concat(queue);
|
|
} else {
|
|
queueIndex = -1;
|
|
}
|
|
if (queue.length) {
|
|
drainQueue();
|
|
}
|
|
}
|
|
|
|
function drainQueue() {
|
|
if (draining) {
|
|
return;
|
|
}
|
|
var timeout = runTimeout(cleanUpNextTick);
|
|
draining = true;
|
|
|
|
var len = queue.length;
|
|
while(len) {
|
|
currentQueue = queue;
|
|
queue = [];
|
|
while (++queueIndex < len) {
|
|
if (currentQueue) {
|
|
currentQueue[queueIndex].run();
|
|
}
|
|
}
|
|
queueIndex = -1;
|
|
len = queue.length;
|
|
}
|
|
currentQueue = null;
|
|
draining = false;
|
|
runClearTimeout(timeout);
|
|
}
|
|
|
|
process.nextTick = function (fun) {
|
|
var args = new Array(arguments.length - 1);
|
|
if (arguments.length > 1) {
|
|
for (var i = 1; i < arguments.length; i++) {
|
|
args[i - 1] = arguments[i];
|
|
}
|
|
}
|
|
queue.push(new Item(fun, args));
|
|
if (queue.length === 1 && !draining) {
|
|
runTimeout(drainQueue);
|
|
}
|
|
};
|
|
|
|
// v8 likes predictible objects
|
|
function Item(fun, array) {
|
|
this.fun = fun;
|
|
this.array = array;
|
|
}
|
|
Item.prototype.run = function () {
|
|
this.fun.apply(null, this.array);
|
|
};
|
|
process.title = 'browser';
|
|
process.browser = true;
|
|
process.env = {};
|
|
process.argv = [];
|
|
process.version = ''; // empty string to avoid regexp issues
|
|
process.versions = {};
|
|
|
|
function noop() {}
|
|
|
|
process.on = noop;
|
|
process.addListener = noop;
|
|
process.once = noop;
|
|
process.off = noop;
|
|
process.removeListener = noop;
|
|
process.removeAllListeners = noop;
|
|
process.emit = noop;
|
|
process.prependListener = noop;
|
|
process.prependOnceListener = noop;
|
|
|
|
process.listeners = function (name) { return [] }
|
|
|
|
process.binding = function (name) {
|
|
throw new Error('process.binding is not supported');
|
|
};
|
|
|
|
process.cwd = function () { return '/' };
|
|
process.chdir = function (dir) {
|
|
throw new Error('process.chdir is not supported');
|
|
};
|
|
process.umask = function() { return 0; };
|
|
|
|
|
|
/***/ }),
|
|
/* 3 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
|
|
class Document {
|
|
constructor(data) {
|
|
this.handlers = {};
|
|
this.setup();
|
|
Object.assign(this, data);
|
|
}
|
|
|
|
setup() {
|
|
// add handlers
|
|
}
|
|
|
|
clear_handlers() {
|
|
this.handlers = {};
|
|
}
|
|
|
|
add_handler(key, method) {
|
|
if (!this.handlers[key]) {
|
|
this.handlers[key] = [];
|
|
}
|
|
this.handlers[key].push(method || key);
|
|
}
|
|
|
|
get(key) {
|
|
return this[key];
|
|
}
|
|
|
|
set(key, value) {
|
|
this.validate_field(key, value);
|
|
this[key] = value;
|
|
}
|
|
|
|
set_name() {
|
|
// assign a random name by default
|
|
// override this to set a name
|
|
if (!this.name) {
|
|
this.name = Math.random().toString(36).substr(3);
|
|
}
|
|
}
|
|
|
|
set_keywords() {
|
|
let keywords = [];
|
|
for (let fieldname of this.meta.get_keyword_fields()) {
|
|
keywords.push(this[fieldname]);
|
|
}
|
|
this.keywords = keywords.join(', ');
|
|
}
|
|
|
|
get meta() {
|
|
if (!this._meta) {
|
|
this._meta = frappe.get_meta(this.doctype);
|
|
}
|
|
return this._meta;
|
|
}
|
|
|
|
append(key, document) {
|
|
if (!this[key]) {
|
|
this[key] = [];
|
|
}
|
|
this[key].push(this.init_doc(document));
|
|
}
|
|
|
|
init_doc(data) {
|
|
if (data.prototype instanceof Document) {
|
|
return data;
|
|
} else {
|
|
return new Document(d);
|
|
}
|
|
}
|
|
|
|
validate_field (key, value) {
|
|
let df = this.meta.get_field(key);
|
|
if (df.fieldtype=='Select') {
|
|
this.meta.validate_select(df, value);
|
|
}
|
|
}
|
|
|
|
get_valid_dict() {
|
|
let doc = {};
|
|
for(let df of this.meta.get_valid_fields()) {
|
|
doc[df.fieldname] = this.get(df.fieldname);
|
|
}
|
|
return doc;
|
|
}
|
|
|
|
set_standard_values() {
|
|
let now = new Date();
|
|
if (this.docstatus === null || this.docstatus === undefined) {
|
|
this.docstatus = 0;
|
|
}
|
|
if (!this.owner) {
|
|
this.owner = frappe.session.user;
|
|
this.creation = now;
|
|
}
|
|
this.modified_by = frappe.session.user;
|
|
this.modified = now;
|
|
}
|
|
|
|
async load() {
|
|
let data = await frappe.db.get(this.doctype, this.name);
|
|
if (data.name) {
|
|
Object.assign(this, data);
|
|
} else {
|
|
throw new frappe.errors.NotFound(`Not Found: ${this.doctype} ${this.name}`);
|
|
}
|
|
}
|
|
|
|
async insert() {
|
|
this.set_name();
|
|
this.set_standard_values();
|
|
this.set_keywords();
|
|
await this.trigger('validate', 'before_insert');
|
|
await frappe.db.insert(this.doctype, this.get_valid_dict());
|
|
await this.trigger('after_insert', 'after_save');
|
|
}
|
|
|
|
async delete() {
|
|
await this.trigger('before_delete');
|
|
await frappe.db.delete(this.doctype, this.name);
|
|
await this.trigger('after_delete');
|
|
}
|
|
|
|
async trigger() {
|
|
for(var key of arguments) {
|
|
if (this.handlers[key]) {
|
|
for (let method of this.handlers[key]) {
|
|
if (typeof method === 'string') {
|
|
await this[method]();
|
|
} else {
|
|
await method(this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
async update() {
|
|
this.set_standard_values();
|
|
this.set_keywords();
|
|
await this.trigger('validate', 'before_update');
|
|
await frappe.db.update(this.doctype, this.get_valid_dict());
|
|
await this.trigger('after_update', 'after_save');
|
|
return this;
|
|
}
|
|
};
|
|
|
|
module.exports = { Document: Document };
|
|
|
|
/***/ }),
|
|
/* 4 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
__webpack_require__(5);
|
|
|
|
const client = __webpack_require__(9);
|
|
|
|
// start server
|
|
client.start({
|
|
server: 'localhost:8000',
|
|
container: document.querySelector('.wrapper'),
|
|
}).then(() => {
|
|
const todo = __webpack_require__(31);
|
|
frappe.init_controller('todo', todo);
|
|
|
|
frappe.desk.add_sidebar_item('Home', '#');
|
|
frappe.desk.add_sidebar_item('New ToDo', '#new/todo');
|
|
|
|
frappe.router.default = '/list/todo';
|
|
|
|
frappe.router.show(window.location.hash);
|
|
});
|
|
|
|
/***/ }),
|
|
/* 5 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
// style-loader: Adds some css to the DOM by adding a <style> tag
|
|
|
|
// load the styles
|
|
var content = __webpack_require__(6);
|
|
if(typeof content === 'string') content = [[module.i, content, '']];
|
|
// Prepare cssTransformation
|
|
var transform;
|
|
|
|
var options = {"hmr":true}
|
|
options.transform = transform
|
|
// add the styles to the DOM
|
|
var update = __webpack_require__(7)(content, options);
|
|
if(content.locals) module.exports = content.locals;
|
|
// Hot Module Replacement
|
|
if(false) {
|
|
// When the styles change, update the <style> tags
|
|
if(!content.locals) {
|
|
module.hot.accept("!!../node_modules/css-loader/index.js!../node_modules/postcss-loader/lib/index.js??ref--0-2!../node_modules/sass-loader/lib/loader.js??ref--0-3!./main.scss", function() {
|
|
var newContent = require("!!../node_modules/css-loader/index.js!../node_modules/postcss-loader/lib/index.js??ref--0-2!../node_modules/sass-loader/lib/loader.js??ref--0-3!./main.scss");
|
|
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
|
|
update(newContent);
|
|
});
|
|
}
|
|
// When the module is disposed, remove the <style> tags
|
|
module.hot.dispose(function() { update(); });
|
|
}
|
|
|
|
/***/ }),
|
|
/* 6 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
exports = module.exports = __webpack_require__(33)(false);
|
|
// imports
|
|
|
|
|
|
// module
|
|
exports.push([module.i, "/*!\n * Bootstrap v4.0.0-beta.3 (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n*, *::before, *::after {\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent; }\n@-ms-viewport {\n width: device-width; }\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block; }\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff; }\n[tabindex=\"-1\"]:focus {\n outline: 0 !important; }\nhr {\n -webkit-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n overflow: visible; }\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem; }\np {\n margin-top: 0;\n margin-bottom: 1rem; }\nabbr[title], abbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0; }\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit; }\nol, ul, dl {\n margin-top: 0;\n margin-bottom: 1rem; }\nol ol, ul ul, ol ul, ul ol {\n margin-bottom: 0; }\ndt {\n font-weight: 700; }\ndd {\n margin-bottom: .5rem;\n margin-left: 0; }\nblockquote {\n margin: 0 0 1rem; }\ndfn {\n font-style: italic; }\nb, strong {\n font-weight: bolder; }\nsmall {\n font-size: 80%; }\nsub, sup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline; }\nsub {\n bottom: -.25em; }\nsup {\n top: -.5em; }\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects; }\na:hover {\n color: #0056b3;\n text-decoration: underline; }\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none; }\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none; }\na:not([href]):not([tabindex]):focus {\n outline: 0; }\npre, code, kbd, samp {\n font-family: monospace, monospace;\n font-size: 1em; }\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar; }\nfigure {\n margin: 0 0 1rem; }\nimg {\n vertical-align: middle;\n border-style: none; }\nsvg:not(:root) {\n overflow: hidden; }\na, area, button, [role=\"button\"], input:not([type=\"range\"]), label, select, summary, textarea {\n -ms-touch-action: manipulation;\n touch-action: manipulation; }\ntable {\n border-collapse: collapse; }\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #868e96;\n text-align: left;\n caption-side: bottom; }\nth {\n text-align: inherit; }\nlabel {\n display: inline-block;\n margin-bottom: .5rem; }\nbutton {\n border-radius: 0; }\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color; }\ninput, button, select, optgroup, textarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit; }\nbutton, input {\n overflow: visible; }\nbutton, select {\n text-transform: none; }\nbutton, html [type=\"button\"], [type=\"reset\"], [type=\"submit\"] {\n -webkit-appearance: button; }\nbutton::-moz-focus-inner, [type=\"button\"]::-moz-focus-inner, [type=\"reset\"]::-moz-focus-inner, [type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none; }\ninput[type=\"radio\"], input[type=\"checkbox\"] {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0; }\ninput[type=\"date\"], input[type=\"time\"], input[type=\"datetime-local\"], input[type=\"month\"] {\n -webkit-appearance: listbox; }\ntextarea {\n overflow: auto;\n resize: vertical; }\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0; }\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal; }\nprogress {\n vertical-align: baseline; }\n[type=\"number\"]::-webkit-inner-spin-button, [type=\"number\"]::-webkit-outer-spin-button {\n height: auto; }\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none; }\n[type=\"search\"]::-webkit-search-cancel-button, [type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button; }\noutput {\n display: inline-block; }\nsummary {\n display: list-item;\n cursor: pointer; }\ntemplate {\n display: none; }\n[hidden] {\n display: none !important; }\nh1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n color: inherit; }\nh1, .h1 {\n font-size: 2.5rem; }\nh2, .h2 {\n font-size: 2rem; }\nh3, .h3 {\n font-size: 1.75rem; }\nh4, .h4 {\n font-size: 1.5rem; }\nh5, .h5 {\n font-size: 1.25rem; }\nh6, .h6 {\n font-size: 1rem; }\n.lead {\n font-size: 1.25rem;\n font-weight: 300; }\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2; }\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2; }\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2; }\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2; }\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1); }\nsmall, .small {\n font-size: 80%;\n font-weight: 400; }\nmark, .mark {\n padding: 0.2em;\n background-color: #fcf8e3; }\n.list-unstyled {\n padding-left: 0;\n list-style: none; }\n.list-inline {\n padding-left: 0;\n list-style: none; }\n.list-inline-item {\n display: inline-block; }\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem; }\n.initialism {\n font-size: 90%;\n text-transform: uppercase; }\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem; }\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #868e96; }\n.blockquote-footer::before {\n content: \"\\2014 \\A0\"; }\n.img-fluid {\n max-width: 100%;\n height: auto; }\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto; }\n.figure {\n display: inline-block; }\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1; }\n.figure-caption {\n font-size: 90%;\n color: #868e96; }\ncode, kbd, pre, samp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; }\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-break: break-word; }\na > code {\n color: inherit; }\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem; }\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700; }\npre {\n display: block;\n font-size: 87.5%;\n color: #212529; }\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal; }\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll; }\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto; }\n@media (min-width: 576px) {\n .container {\n max-width: 540px; } }\n@media (min-width: 768px) {\n .container {\n max-width: 720px; } }\n@media (min-width: 992px) {\n .container {\n max-width: 960px; } }\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px; } }\n.container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto; }\n.row {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px; }\n.no-gutters {\n margin-right: 0;\n margin-left: 0; }\n.no-gutters > .col, .no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0; }\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, .col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px; }\n.col {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%; }\n.col-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none; }\n.col-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333%;\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n.col-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66667%;\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n.col-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%; }\n.col-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333%;\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n.col-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66667%;\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n.col-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%; }\n.col-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333%;\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n.col-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66667%;\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n.col-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%; }\n.col-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333%;\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n.col-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66667%;\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n.col-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%; }\n.order-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1; }\n.order-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1; }\n.order-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2; }\n.order-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3; }\n.order-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4; }\n.order-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5; }\n.order-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6; }\n.order-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7; }\n.order-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8; }\n.order-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9; }\n.order-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10; }\n.order-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11; }\n.order-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12; }\n.offset-1 {\n margin-left: 8.33333%; }\n.offset-2 {\n margin-left: 16.66667%; }\n.offset-3 {\n margin-left: 25%; }\n.offset-4 {\n margin-left: 33.33333%; }\n.offset-5 {\n margin-left: 41.66667%; }\n.offset-6 {\n margin-left: 50%; }\n.offset-7 {\n margin-left: 58.33333%; }\n.offset-8 {\n margin-left: 66.66667%; }\n.offset-9 {\n margin-left: 75%; }\n.offset-10 {\n margin-left: 83.33333%; }\n.offset-11 {\n margin-left: 91.66667%; }\n@media (min-width: 576px) {\n .col-sm {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%; }\n .col-sm-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none; }\n .col-sm-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333%;\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n .col-sm-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66667%;\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n .col-sm-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%; }\n .col-sm-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333%;\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n .col-sm-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66667%;\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n .col-sm-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%; }\n .col-sm-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333%;\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n .col-sm-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66667%;\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n .col-sm-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%; }\n .col-sm-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333%;\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n .col-sm-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66667%;\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n .col-sm-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%; }\n .order-sm-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1; }\n .order-sm-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1; }\n .order-sm-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2; }\n .order-sm-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3; }\n .order-sm-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4; }\n .order-sm-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5; }\n .order-sm-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6; }\n .order-sm-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7; }\n .order-sm-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8; }\n .order-sm-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9; }\n .order-sm-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10; }\n .order-sm-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11; }\n .order-sm-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12; }\n .offset-sm-0 {\n margin-left: 0; }\n .offset-sm-1 {\n margin-left: 8.33333%; }\n .offset-sm-2 {\n margin-left: 16.66667%; }\n .offset-sm-3 {\n margin-left: 25%; }\n .offset-sm-4 {\n margin-left: 33.33333%; }\n .offset-sm-5 {\n margin-left: 41.66667%; }\n .offset-sm-6 {\n margin-left: 50%; }\n .offset-sm-7 {\n margin-left: 58.33333%; }\n .offset-sm-8 {\n margin-left: 66.66667%; }\n .offset-sm-9 {\n margin-left: 75%; }\n .offset-sm-10 {\n margin-left: 83.33333%; }\n .offset-sm-11 {\n margin-left: 91.66667%; } }\n@media (min-width: 768px) {\n .col-md {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%; }\n .col-md-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none; }\n .col-md-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333%;\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n .col-md-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66667%;\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n .col-md-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%; }\n .col-md-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333%;\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n .col-md-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66667%;\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n .col-md-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%; }\n .col-md-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333%;\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n .col-md-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66667%;\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n .col-md-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%; }\n .col-md-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333%;\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n .col-md-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66667%;\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n .col-md-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%; }\n .order-md-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1; }\n .order-md-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1; }\n .order-md-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2; }\n .order-md-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3; }\n .order-md-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4; }\n .order-md-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5; }\n .order-md-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6; }\n .order-md-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7; }\n .order-md-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8; }\n .order-md-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9; }\n .order-md-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10; }\n .order-md-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11; }\n .order-md-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12; }\n .offset-md-0 {\n margin-left: 0; }\n .offset-md-1 {\n margin-left: 8.33333%; }\n .offset-md-2 {\n margin-left: 16.66667%; }\n .offset-md-3 {\n margin-left: 25%; }\n .offset-md-4 {\n margin-left: 33.33333%; }\n .offset-md-5 {\n margin-left: 41.66667%; }\n .offset-md-6 {\n margin-left: 50%; }\n .offset-md-7 {\n margin-left: 58.33333%; }\n .offset-md-8 {\n margin-left: 66.66667%; }\n .offset-md-9 {\n margin-left: 75%; }\n .offset-md-10 {\n margin-left: 83.33333%; }\n .offset-md-11 {\n margin-left: 91.66667%; } }\n@media (min-width: 992px) {\n .col-lg {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%; }\n .col-lg-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none; }\n .col-lg-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333%;\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n .col-lg-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66667%;\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n .col-lg-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%; }\n .col-lg-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333%;\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n .col-lg-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66667%;\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n .col-lg-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%; }\n .col-lg-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333%;\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n .col-lg-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66667%;\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n .col-lg-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%; }\n .col-lg-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333%;\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n .col-lg-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66667%;\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n .col-lg-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%; }\n .order-lg-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1; }\n .order-lg-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1; }\n .order-lg-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2; }\n .order-lg-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3; }\n .order-lg-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4; }\n .order-lg-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5; }\n .order-lg-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6; }\n .order-lg-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7; }\n .order-lg-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8; }\n .order-lg-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9; }\n .order-lg-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10; }\n .order-lg-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11; }\n .order-lg-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12; }\n .offset-lg-0 {\n margin-left: 0; }\n .offset-lg-1 {\n margin-left: 8.33333%; }\n .offset-lg-2 {\n margin-left: 16.66667%; }\n .offset-lg-3 {\n margin-left: 25%; }\n .offset-lg-4 {\n margin-left: 33.33333%; }\n .offset-lg-5 {\n margin-left: 41.66667%; }\n .offset-lg-6 {\n margin-left: 50%; }\n .offset-lg-7 {\n margin-left: 58.33333%; }\n .offset-lg-8 {\n margin-left: 66.66667%; }\n .offset-lg-9 {\n margin-left: 75%; }\n .offset-lg-10 {\n margin-left: 83.33333%; }\n .offset-lg-11 {\n margin-left: 91.66667%; } }\n@media (min-width: 1200px) {\n .col-xl {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%; }\n .col-xl-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none; }\n .col-xl-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333%;\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n .col-xl-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66667%;\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n .col-xl-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%; }\n .col-xl-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333%;\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n .col-xl-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66667%;\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n .col-xl-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%; }\n .col-xl-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333%;\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n .col-xl-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66667%;\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n .col-xl-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%; }\n .col-xl-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333%;\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n .col-xl-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66667%;\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n .col-xl-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%; }\n .order-xl-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1; }\n .order-xl-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1; }\n .order-xl-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2; }\n .order-xl-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3; }\n .order-xl-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4; }\n .order-xl-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5; }\n .order-xl-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6; }\n .order-xl-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7; }\n .order-xl-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8; }\n .order-xl-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9; }\n .order-xl-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10; }\n .order-xl-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11; }\n .order-xl-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12; }\n .offset-xl-0 {\n margin-left: 0; }\n .offset-xl-1 {\n margin-left: 8.33333%; }\n .offset-xl-2 {\n margin-left: 16.66667%; }\n .offset-xl-3 {\n margin-left: 25%; }\n .offset-xl-4 {\n margin-left: 33.33333%; }\n .offset-xl-5 {\n margin-left: 41.66667%; }\n .offset-xl-6 {\n margin-left: 50%; }\n .offset-xl-7 {\n margin-left: 58.33333%; }\n .offset-xl-8 {\n margin-left: 66.66667%; }\n .offset-xl-9 {\n margin-left: 75%; }\n .offset-xl-10 {\n margin-left: 83.33333%; }\n .offset-xl-11 {\n margin-left: 91.66667%; } }\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent; }\n.table th, .table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6; }\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6; }\n.table tbody + tbody {\n border-top: 2px solid #dee2e6; }\n.table .table {\n background-color: #fff; }\n.table-sm th, .table-sm td {\n padding: 0.3rem; }\n.table-bordered {\n border: 1px solid #dee2e6; }\n.table-bordered th, .table-bordered td {\n border: 1px solid #dee2e6; }\n.table-bordered thead th, .table-bordered thead td {\n border-bottom-width: 2px; }\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05); }\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075); }\n.table-primary, .table-primary > th, .table-primary > td {\n background-color: #b8daff; }\n.table-hover .table-primary:hover {\n background-color: #9fcdff; }\n.table-hover .table-primary:hover > td, .table-hover .table-primary:hover > th {\n background-color: #9fcdff; }\n.table-secondary, .table-secondary > th, .table-secondary > td {\n background-color: #dddfe2; }\n.table-hover .table-secondary:hover {\n background-color: #cfd2d6; }\n.table-hover .table-secondary:hover > td, .table-hover .table-secondary:hover > th {\n background-color: #cfd2d6; }\n.table-success, .table-success > th, .table-success > td {\n background-color: #c3e6cb; }\n.table-hover .table-success:hover {\n background-color: #b1dfbb; }\n.table-hover .table-success:hover > td, .table-hover .table-success:hover > th {\n background-color: #b1dfbb; }\n.table-info, .table-info > th, .table-info > td {\n background-color: #bee5eb; }\n.table-hover .table-info:hover {\n background-color: #abdde5; }\n.table-hover .table-info:hover > td, .table-hover .table-info:hover > th {\n background-color: #abdde5; }\n.table-warning, .table-warning > th, .table-warning > td {\n background-color: #ffeeba; }\n.table-hover .table-warning:hover {\n background-color: #ffe8a1; }\n.table-hover .table-warning:hover > td, .table-hover .table-warning:hover > th {\n background-color: #ffe8a1; }\n.table-danger, .table-danger > th, .table-danger > td {\n background-color: #f5c6cb; }\n.table-hover .table-danger:hover {\n background-color: #f1b0b7; }\n.table-hover .table-danger:hover > td, .table-hover .table-danger:hover > th {\n background-color: #f1b0b7; }\n.table-light, .table-light > th, .table-light > td {\n background-color: #fdfdfe; }\n.table-hover .table-light:hover {\n background-color: #ececf6; }\n.table-hover .table-light:hover > td, .table-hover .table-light:hover > th {\n background-color: #ececf6; }\n.table-dark, .table-dark > th, .table-dark > td {\n background-color: #c6c8ca; }\n.table-hover .table-dark:hover {\n background-color: #b9bbbe; }\n.table-hover .table-dark:hover > td, .table-hover .table-dark:hover > th {\n background-color: #b9bbbe; }\n.table-active, .table-active > th, .table-active > td {\n background-color: rgba(0, 0, 0, 0.075); }\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075); }\n.table-hover .table-active:hover > td, .table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075); }\n.table .thead-dark th {\n color: #fff;\n background-color: #212529;\n border-color: #32383e; }\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6; }\n.table-dark {\n color: #fff;\n background-color: #212529; }\n.table-dark th, .table-dark td, .table-dark thead th {\n border-color: #32383e; }\n.table-dark.table-bordered {\n border: 0; }\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05); }\n.table-dark.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075); }\n@media (max-width: 575.99px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n .table-responsive-sm > .table-bordered {\n border: 0; } }\n@media (max-width: 767.99px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n .table-responsive-md > .table-bordered {\n border: 0; } }\n@media (max-width: 991.99px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n .table-responsive-lg > .table-bordered {\n border: 0; } }\n@media (max-width: 1199.99px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n .table-responsive-xl > .table-bordered {\n border: 0; } }\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n.table-responsive > .table-bordered {\n border: 0; }\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; }\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0; }\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n.form-control::-webkit-input-placeholder {\n color: #868e96;\n opacity: 1; }\n.form-control:-ms-input-placeholder {\n color: #868e96;\n opacity: 1; }\n.form-control::-ms-input-placeholder {\n color: #868e96;\n opacity: 1; }\n.form-control::placeholder {\n color: #868e96;\n opacity: 1; }\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1; }\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px); }\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff; }\n.form-control-file, .form-control-range {\n display: block;\n width: 100%; }\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5; }\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5; }\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5; }\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0;\n line-height: 1.5;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0; }\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control, .input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text, .input-group-sm > .input-group-append > .form-control-plaintext.input-group-text, .input-group-sm > .input-group-prepend > .form-control-plaintext.btn, .input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control, .input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text, .input-group-lg > .input-group-append > .form-control-plaintext.input-group-text, .input-group-lg > .input-group-prepend > .form-control-plaintext.btn, .input-group-lg > .input-group-append > .form-control-plaintext.btn {\n padding-right: 0;\n padding-left: 0; }\n.form-control-sm, .input-group-sm > .form-control, .input-group-sm > .input-group-prepend > .input-group-text, .input-group-sm > .input-group-append > .input-group-text, .input-group-sm > .input-group-prepend > .btn, .input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem; }\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]), .input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]), .input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]), .input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]), .input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {\n height: calc(1.8125rem + 2px); }\n.form-control-lg, .input-group-lg > .form-control, .input-group-lg > .input-group-prepend > .input-group-text, .input-group-lg > .input-group-append > .input-group-text, .input-group-lg > .input-group-prepend > .btn, .input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem; }\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]), .input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]), .input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]), .input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]), .input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {\n height: calc(2.875rem + 2px); }\n.form-group {\n margin-bottom: 1rem; }\n.form-text {\n display: block;\n margin-top: 0.25rem; }\n.form-row {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px; }\n.form-row > .col, .form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px; }\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem; }\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem; }\n.form-check-input:disabled ~ .form-check-label {\n color: #868e96; }\n.form-check-label {\n margin-bottom: 0; }\n.form-check-inline {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem; }\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0; }\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745; }\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n width: 250px;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.8);\n border-radius: .2rem; }\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid, .custom-select.is-valid {\n border-color: #28a745; }\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n .custom-select:valid:focus, .custom-select.is-valid:focus {\n border-color: #28a745;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); }\n.was-validated .form-control:valid ~ .valid-feedback, .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, .form-control.is-valid ~ .valid-tooltip, .was-validated\n .custom-select:valid ~ .valid-feedback, .was-validated\n .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, .custom-select.is-valid ~ .valid-tooltip {\n display: block; }\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745; }\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745; }\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n background-color: #71dd8a; }\n.was-validated .custom-control-input:valid ~ .valid-feedback, .was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, .custom-control-input.is-valid ~ .valid-tooltip {\n display: block; }\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n background-color: #34ce57; }\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25); }\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745; }\n.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {\n border-color: inherit; }\n.was-validated .custom-file-input:valid ~ .valid-feedback, .was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, .custom-file-input.is-valid ~ .valid-tooltip {\n display: block; }\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); }\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545; }\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n width: 250px;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.8);\n border-radius: .2rem; }\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid, .custom-select.is-invalid {\n border-color: #dc3545; }\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n border-color: #dc3545;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); }\n.was-validated .form-control:invalid ~ .invalid-feedback, .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, .form-control.is-invalid ~ .invalid-tooltip, .was-validated\n .custom-select:invalid ~ .invalid-feedback, .was-validated\n .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, .custom-select.is-invalid ~ .invalid-tooltip {\n display: block; }\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545; }\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545; }\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n background-color: #efa2a9; }\n.was-validated .custom-control-input:invalid ~ .invalid-feedback, .was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, .custom-control-input.is-invalid ~ .invalid-tooltip {\n display: block; }\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n background-color: #e4606d; }\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25); }\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545; }\n.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {\n border-color: inherit; }\n.was-validated .custom-file-input:invalid ~ .invalid-feedback, .was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, .custom-file-input.is-invalid ~ .invalid-tooltip {\n display: block; }\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); }\n.form-inline {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n.form-inline .form-check {\n width: 100%; }\n@media (min-width: 576px) {\n .form-inline label {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: 0; }\n .form-inline .form-group {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n margin-bottom: 0; }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle; }\n .form-inline .form-control-plaintext {\n display: inline-block; }\n .form-inline .input-group {\n width: auto; }\n .form-inline .form-check {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: auto;\n padding-left: 0; }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0; }\n .form-inline .custom-control {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n .form-inline .custom-control-label {\n margin-bottom: 0; } }\n.btn {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; }\n.btn:focus, .btn:hover {\n text-decoration: none; }\n.btn:focus, .btn.focus {\n outline: 0;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n.btn.disabled, .btn:disabled {\n opacity: 0.65; }\n.btn:not([disabled]):not(.disabled) {\n cursor: pointer; }\n.btn:not([disabled]):not(.disabled):active, .btn:not([disabled]):not(.disabled).active {\n background-image: none; }\na.btn.disabled, fieldset[disabled] a.btn {\n pointer-events: none; }\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff; }\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc; }\n.btn-primary:focus, .btn-primary.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); }\n.btn-primary.disabled, .btn-primary:disabled {\n background-color: #007bff;\n border-color: #007bff; }\n.btn-primary:not([disabled]):not(.disabled):active, .btn-primary:not([disabled]):not(.disabled).active, .show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf; }\n.btn-primary:not([disabled]):not(.disabled):active:focus, .btn-primary:not([disabled]):not(.disabled).active:focus, .show > .btn-primary.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); }\n.btn-secondary {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96; }\n.btn-secondary:hover {\n color: #fff;\n background-color: #727b84;\n border-color: #6c757d; }\n.btn-secondary:focus, .btn-secondary.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); }\n.btn-secondary.disabled, .btn-secondary:disabled {\n background-color: #868e96;\n border-color: #868e96; }\n.btn-secondary:not([disabled]):not(.disabled):active, .btn-secondary:not([disabled]):not(.disabled).active, .show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #666e76; }\n.btn-secondary:not([disabled]):not(.disabled):active:focus, .btn-secondary:not([disabled]):not(.disabled).active:focus, .show > .btn-secondary.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); }\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745; }\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34; }\n.btn-success:focus, .btn-success.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); }\n.btn-success.disabled, .btn-success:disabled {\n background-color: #28a745;\n border-color: #28a745; }\n.btn-success:not([disabled]):not(.disabled):active, .btn-success:not([disabled]):not(.disabled).active, .show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430; }\n.btn-success:not([disabled]):not(.disabled):active:focus, .btn-success:not([disabled]):not(.disabled).active:focus, .show > .btn-success.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); }\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8; }\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b; }\n.btn-info:focus, .btn-info.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); }\n.btn-info.disabled, .btn-info:disabled {\n background-color: #17a2b8;\n border-color: #17a2b8; }\n.btn-info:not([disabled]):not(.disabled):active, .btn-info:not([disabled]):not(.disabled).active, .show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f; }\n.btn-info:not([disabled]):not(.disabled):active:focus, .btn-info:not([disabled]):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); }\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107; }\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00; }\n.btn-warning:focus, .btn-warning.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); }\n.btn-warning.disabled, .btn-warning:disabled {\n background-color: #ffc107;\n border-color: #ffc107; }\n.btn-warning:not([disabled]):not(.disabled):active, .btn-warning:not([disabled]):not(.disabled).active, .show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500; }\n.btn-warning:not([disabled]):not(.disabled):active:focus, .btn-warning:not([disabled]):not(.disabled).active:focus, .show > .btn-warning.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); }\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545; }\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130; }\n.btn-danger:focus, .btn-danger.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); }\n.btn-danger.disabled, .btn-danger:disabled {\n background-color: #dc3545;\n border-color: #dc3545; }\n.btn-danger:not([disabled]):not(.disabled):active, .btn-danger:not([disabled]):not(.disabled).active, .show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d; }\n.btn-danger:not([disabled]):not(.disabled):active:focus, .btn-danger:not([disabled]):not(.disabled).active:focus, .show > .btn-danger.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); }\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa; }\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5; }\n.btn-light:focus, .btn-light.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); }\n.btn-light.disabled, .btn-light:disabled {\n background-color: #f8f9fa;\n border-color: #f8f9fa; }\n.btn-light:not([disabled]):not(.disabled):active, .btn-light:not([disabled]):not(.disabled).active, .show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df; }\n.btn-light:not([disabled]):not(.disabled):active:focus, .btn-light:not([disabled]):not(.disabled).active:focus, .show > .btn-light.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); }\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40; }\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124; }\n.btn-dark:focus, .btn-dark.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); }\n.btn-dark.disabled, .btn-dark:disabled {\n background-color: #343a40;\n border-color: #343a40; }\n.btn-dark:not([disabled]):not(.disabled):active, .btn-dark:not([disabled]):not(.disabled).active, .show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d; }\n.btn-dark:not([disabled]):not(.disabled):active:focus, .btn-dark:not([disabled]):not(.disabled).active:focus, .show > .btn-dark.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); }\n.btn-outline-primary {\n color: #007bff;\n background-color: transparent;\n background-image: none;\n border-color: #007bff; }\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff; }\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); }\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent; }\n.btn-outline-primary:not([disabled]):not(.disabled):active, .btn-outline-primary:not([disabled]):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle {\n color: #212529;\n background-color: #007bff;\n border-color: #007bff;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); }\n.btn-outline-secondary {\n color: #868e96;\n background-color: transparent;\n background-image: none;\n border-color: #868e96; }\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96; }\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); }\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #868e96;\n background-color: transparent; }\n.btn-outline-secondary:not([disabled]):not(.disabled):active, .btn-outline-secondary:not([disabled]):not(.disabled).active, .show > .btn-outline-secondary.dropdown-toggle {\n color: #212529;\n background-color: #868e96;\n border-color: #868e96;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); }\n.btn-outline-success {\n color: #28a745;\n background-color: transparent;\n background-image: none;\n border-color: #28a745; }\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745; }\n.btn-outline-success:focus, .btn-outline-success.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); }\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent; }\n.btn-outline-success:not([disabled]):not(.disabled):active, .btn-outline-success:not([disabled]):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle {\n color: #212529;\n background-color: #28a745;\n border-color: #28a745;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); }\n.btn-outline-info {\n color: #17a2b8;\n background-color: transparent;\n background-image: none;\n border-color: #17a2b8; }\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8; }\n.btn-outline-info:focus, .btn-outline-info.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); }\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent; }\n.btn-outline-info:not([disabled]):not(.disabled):active, .btn-outline-info:not([disabled]):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle {\n color: #212529;\n background-color: #17a2b8;\n border-color: #17a2b8;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); }\n.btn-outline-warning {\n color: #ffc107;\n background-color: transparent;\n background-image: none;\n border-color: #ffc107; }\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107; }\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); }\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent; }\n.btn-outline-warning:not([disabled]):not(.disabled):active, .btn-outline-warning:not([disabled]):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); }\n.btn-outline-danger {\n color: #dc3545;\n background-color: transparent;\n background-image: none;\n border-color: #dc3545; }\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545; }\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); }\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent; }\n.btn-outline-danger:not([disabled]):not(.disabled):active, .btn-outline-danger:not([disabled]):not(.disabled).active, .show > .btn-outline-danger.dropdown-toggle {\n color: #212529;\n background-color: #dc3545;\n border-color: #dc3545;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); }\n.btn-outline-light {\n color: #f8f9fa;\n background-color: transparent;\n background-image: none;\n border-color: #f8f9fa; }\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa; }\n.btn-outline-light:focus, .btn-outline-light.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); }\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent; }\n.btn-outline-light:not([disabled]):not(.disabled):active, .btn-outline-light:not([disabled]):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle {\n color: #fff;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); }\n.btn-outline-dark {\n color: #343a40;\n background-color: transparent;\n background-image: none;\n border-color: #343a40; }\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40; }\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); }\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent; }\n.btn-outline-dark:not([disabled]):not(.disabled):active, .btn-outline-dark:not([disabled]):not(.disabled).active, .show > .btn-outline-dark.dropdown-toggle {\n color: #212529;\n background-color: #343a40;\n border-color: #343a40;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); }\n.btn-link {\n font-weight: 400;\n color: #007bff;\n background-color: transparent; }\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent; }\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none; }\n.btn-link:disabled, .btn-link.disabled {\n color: #868e96; }\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem; }\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem; }\n.btn-block {\n display: block;\n width: 100%; }\n.btn-block + .btn-block {\n margin-top: 0.5rem; }\ninput[type=\"submit\"].btn-block, input[type=\"reset\"].btn-block, input[type=\"button\"].btn-block {\n width: 100%; }\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear; }\n.fade.show {\n opacity: 1; }\n.collapse {\n display: none; }\n.collapse.show {\n display: block; }\ntr.collapse.show {\n display: table-row; }\ntbody.collapse.show {\n display: table-row-group; }\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition: height 0.35s ease;\n transition: height 0.35s ease; }\n.dropup, .dropdown {\n position: relative; }\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent; }\n.dropdown-toggle:empty::after {\n margin-left: 0; }\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem; }\n.dropup .dropdown-menu {\n margin-top: 0;\n margin-bottom: 0.125rem; }\n.dropup .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent; }\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0; }\n.dropright .dropdown-menu {\n margin-top: 0;\n margin-left: 0.125rem; }\n.dropright .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid; }\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0; }\n.dropright .dropdown-toggle::after {\n vertical-align: 0; }\n.dropleft .dropdown-menu {\n margin-top: 0;\n margin-right: 0.125rem; }\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\"; }\n.dropleft .dropdown-toggle::after {\n display: none; }\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent; }\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0; }\n.dropleft .dropdown-toggle::before {\n vertical-align: 0; }\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef; }\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0; }\n.dropdown-item:focus, .dropdown-item:hover {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa; }\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff; }\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #868e96;\n background-color: transparent; }\n.dropdown-menu.show {\n display: block; }\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #868e96;\n white-space: nowrap; }\n.btn-group, .btn-group-vertical {\n position: relative;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n vertical-align: middle; }\n.btn-group > .btn, .btn-group-vertical > .btn {\n position: relative;\n -webkit-box-flex: 0;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto; }\n.btn-group > .btn:hover, .btn-group-vertical > .btn:hover {\n z-index: 1; }\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn:focus, .btn-group-vertical > .btn:active, .btn-group-vertical > .btn.active {\n z-index: 1; }\n.btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group, .btn-group-vertical .btn + .btn, .btn-group-vertical .btn + .btn-group, .btn-group-vertical .btn-group + .btn, .btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px; }\n.btn-toolbar {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n.btn-toolbar .input-group {\n width: auto; }\n.btn-group > .btn:first-child {\n margin-left: 0; }\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle), .btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n.btn-group > .btn:not(:first-child), .btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem; }\n.dropdown-toggle-split::after {\n margin-left: 0; }\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem; }\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem; }\n.btn-group-vertical {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n.btn-group-vertical .btn, .btn-group-vertical .btn-group {\n width: 100%; }\n.btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0; }\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), .btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0; }\n.btn-group-vertical > .btn:not(:first-child), .btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0; }\n.btn-group-toggle > .btn, .btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0; }\n.btn-group-toggle > .btn input[type=\"radio\"], .btn-group-toggle > .btn input[type=\"checkbox\"], .btn-group-toggle > .btn-group > .btn input[type=\"radio\"], .btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none; }\n.input-group {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch;\n width: 100%; }\n.input-group .form-control, .input-group .custom-select, .input-group .custom-file {\n position: relative;\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0; }\n.input-group .form-control:focus, .input-group .custom-select:focus, .input-group .custom-file:focus {\n z-index: 3; }\n.input-group .form-control + .form-control, .input-group .custom-select + .form-control, .input-group .custom-file + .form-control {\n margin-left: -1px; }\n.input-group .form-control:not(:last-child), .input-group .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n.input-group .form-control:not(:first-child), .input-group .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n.input-group .custom-file {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n.input-group .custom-file:not(:last-child) .custom-file-control, .input-group .custom-file:not(:last-child) .custom-file-control::before {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n.input-group .custom-file:not(:first-child) .custom-file-control, .input-group .custom-file:not(:first-child) .custom-file-control::before {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n.input-group-prepend, .input-group-append {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n.input-group-prepend .btn, .input-group-append .btn {\n position: relative;\n z-index: 2; }\n.input-group-prepend .btn + .btn, .input-group-prepend .btn + .input-group-text, .input-group-prepend .input-group-text + .input-group-text, .input-group-prepend .input-group-text + .btn, .input-group-append .btn + .btn, .input-group-append .btn + .input-group-text, .input-group-append .input-group-text + .input-group-text, .input-group-append .input-group-text + .btn {\n margin-left: -1px; }\n.input-group-prepend {\n margin-right: -1px; }\n.input-group-append {\n margin-left: -1px; }\n.input-group-text {\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem; }\n.input-group-text input[type=\"radio\"], .input-group-text input[type=\"checkbox\"] {\n margin-top: 0; }\n.input-group > .input-group-prepend > .btn, .input-group > .input-group-prepend > .input-group-text, .input-group > .input-group-append:not(:last-child) > .btn, .input-group > .input-group-append:not(:last-child) > .input-group-text, .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n.input-group > .input-group-append > .btn, .input-group > .input-group-append > .input-group-text, .input-group > .input-group-prepend:not(:first-child) > .btn, .input-group > .input-group-prepend:not(:first-child) > .input-group-text, .input-group > .input-group-prepend:first-child > .btn:not(:first-child), .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem; }\n.custom-control-inline {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n margin-right: 1rem; }\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0; }\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n background-color: #007bff; }\n.custom-control-input:focus ~ .custom-control-label::before {\n -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n.custom-control-input:active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff; }\n.custom-control-input:disabled ~ .custom-control-label {\n color: #868e96; }\n.custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef; }\n.custom-control-label {\n margin-bottom: 0; }\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: #dee2e6; }\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%; }\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem; }\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n background-color: #007bff; }\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\"); }\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n background-color: #007bff; }\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\"); }\n.custom-radio .custom-control-label::before {\n border-radius: 50%; }\n.custom-radio .custom-control-input:checked ~ .custom-control-label::before {\n background-color: #007bff; }\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\"); }\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none; }\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff; }\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none; }\n.custom-select:disabled {\n color: #868e96;\n background-color: #e9ecef; }\n.custom-select::-ms-expand {\n opacity: 0; }\n.custom-select-sm {\n height: calc(1.8125rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%; }\n.custom-select-lg {\n height: calc(2.875rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 125%; }\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(2.25rem + 2px);\n margin-bottom: 0; }\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(2.25rem + 2px);\n margin: 0;\n opacity: 0; }\n.custom-file-input:focus ~ .custom-file-control {\n border-color: #80bdff;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); }\n.custom-file-input:focus ~ .custom-file-control::before {\n border-color: #80bdff; }\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\"; }\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem; }\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(calc(2.25rem + 2px) - 1px * 2);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: 1px solid #ced4da;\n border-radius: 0 0.25rem 0.25rem 0; }\n.nav {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none; }\n.nav-link {\n display: block;\n padding: 0.5rem 1rem; }\n.nav-link:focus, .nav-link:hover {\n text-decoration: none; }\n.nav-link.disabled {\n color: #868e96; }\n.nav-tabs {\n border-bottom: 1px solid #dee2e6; }\n.nav-tabs .nav-item {\n margin-bottom: -1px; }\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem; }\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #e9ecef #e9ecef #dee2e6; }\n.nav-tabs .nav-link.disabled {\n color: #868e96;\n background-color: transparent;\n border-color: transparent; }\n.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff; }\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0; }\n.nav-pills .nav-link {\n border-radius: 0.25rem; }\n.nav-pills .nav-link.active, .nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff; }\n.nav-fill .nav-item {\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n text-align: center; }\n.nav-justified .nav-item {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n text-align: center; }\n.tab-content > .tab-pane {\n display: none; }\n.tab-content > .active {\n display: block; }\n.navbar {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 0.5rem 1rem; }\n.navbar > .container, .navbar > .container-fluid {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between; }\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap; }\n.navbar-brand:focus, .navbar-brand:hover {\n text-decoration: none; }\n.navbar-nav {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none; }\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0; }\n.navbar-nav .dropdown-menu {\n position: static;\n float: none; }\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem; }\n.navbar-collapse {\n -ms-flex-preferred-size: 100%;\n flex-basis: 100%;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem; }\n.navbar-toggler:focus, .navbar-toggler:hover {\n text-decoration: none; }\n.navbar-toggler:not([disabled]):not(.disabled) {\n cursor: pointer; }\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%; }\n@media (max-width: 575.99px) {\n .navbar-expand-sm > .container, .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0; } }\n@media (min-width: 576px) {\n .navbar-expand-sm {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .navbar-expand-sm .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute; }\n .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto; }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem; }\n .navbar-expand-sm > .container, .navbar-expand-sm > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap; }\n .navbar-expand-sm .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto; }\n .navbar-expand-sm .navbar-toggler {\n display: none; }\n .navbar-expand-sm .dropup .dropdown-menu {\n top: auto;\n bottom: 100%; } }\n@media (max-width: 767.99px) {\n .navbar-expand-md > .container, .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0; } }\n@media (min-width: 768px) {\n .navbar-expand-md {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .navbar-expand-md .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute; }\n .navbar-expand-md .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto; }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem; }\n .navbar-expand-md > .container, .navbar-expand-md > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap; }\n .navbar-expand-md .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto; }\n .navbar-expand-md .navbar-toggler {\n display: none; }\n .navbar-expand-md .dropup .dropdown-menu {\n top: auto;\n bottom: 100%; } }\n@media (max-width: 991.99px) {\n .navbar-expand-lg > .container, .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0; } }\n@media (min-width: 992px) {\n .navbar-expand-lg {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .navbar-expand-lg .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute; }\n .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto; }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem; }\n .navbar-expand-lg > .container, .navbar-expand-lg > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap; }\n .navbar-expand-lg .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto; }\n .navbar-expand-lg .navbar-toggler {\n display: none; }\n .navbar-expand-lg .dropup .dropdown-menu {\n top: auto;\n bottom: 100%; } }\n@media (max-width: 1199.99px) {\n .navbar-expand-xl > .container, .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0; } }\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .navbar-expand-xl .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute; }\n .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto; }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem; }\n .navbar-expand-xl > .container, .navbar-expand-xl > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap; }\n .navbar-expand-xl .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto; }\n .navbar-expand-xl .navbar-toggler {\n display: none; }\n .navbar-expand-xl .dropup .dropdown-menu {\n top: auto;\n bottom: 100%; } }\n.navbar-expand {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n.navbar-expand > .container, .navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0; }\n.navbar-expand .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute; }\n.navbar-expand .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto; }\n.navbar-expand .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem; }\n.navbar-expand > .container, .navbar-expand > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap; }\n.navbar-expand .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto; }\n.navbar-expand .navbar-toggler {\n display: none; }\n.navbar-expand .dropup .dropdown-menu {\n top: auto;\n bottom: 100%; }\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9); }\n.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover {\n color: rgba(0, 0, 0, 0.9); }\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5); }\n.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {\n color: rgba(0, 0, 0, 0.7); }\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3); }\n.navbar-light .navbar-nav .show > .nav-link, .navbar-light .navbar-nav .active > .nav-link, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9); }\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1); }\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"); }\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5); }\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9); }\n.navbar-light .navbar-text a:focus, .navbar-light .navbar-text a:hover {\n color: rgba(0, 0, 0, 0.9); }\n.navbar-dark .navbar-brand {\n color: #fff; }\n.navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover {\n color: #fff; }\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5); }\n.navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover {\n color: rgba(255, 255, 255, 0.75); }\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25); }\n.navbar-dark .navbar-nav .show > .nav-link, .navbar-dark .navbar-nav .active > .nav-link, .navbar-dark .navbar-nav .nav-link.show, .navbar-dark .navbar-nav .nav-link.active {\n color: #fff; }\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1); }\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"); }\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5); }\n.navbar-dark .navbar-text a {\n color: #fff; }\n.navbar-dark .navbar-text a:focus, .navbar-dark .navbar-text a:hover {\n color: #fff; }\n.card {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem; }\n.card > hr {\n margin-right: 0;\n margin-left: 0; }\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem; }\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem; }\n.card-body {\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem; }\n.card-title {\n margin-bottom: 0.75rem; }\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0; }\n.card-text:last-child {\n margin-bottom: 0; }\n.card-link:hover {\n text-decoration: none; }\n.card-link + .card-link {\n margin-left: 1.25rem; }\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125); }\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; }\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0; }\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125); }\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); }\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0; }\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem; }\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem; }\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px); }\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px); }\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px); }\n.card-deck {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column; }\n.card-deck .card {\n margin-bottom: 15px; }\n@media (min-width: 576px) {\n .card-deck {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px; }\n .card-deck .card {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-flex: 1;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px; } }\n.card-group {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column; }\n.card-group > .card {\n margin-bottom: 15px; }\n@media (min-width: 576px) {\n .card-group {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap; }\n .card-group > .card {\n -webkit-box-flex: 1;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0; }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0; }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n .card-group > .card:first-child .card-img-top, .card-group > .card:first-child .card-header {\n border-top-right-radius: 0; }\n .card-group > .card:first-child .card-img-bottom, .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0; }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n .card-group > .card:last-child .card-img-top, .card-group > .card:last-child .card-header {\n border-top-left-radius: 0; }\n .card-group > .card:last-child .card-img-bottom, .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0; }\n .card-group > .card:only-child {\n border-radius: 0.25rem; }\n .card-group > .card:only-child .card-img-top, .card-group > .card:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem; }\n .card-group > .card:only-child .card-img-bottom, .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem; }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0; }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top, .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom, .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header, .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0; } }\n.card-columns .card {\n margin-bottom: 0.75rem; }\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n column-gap: 1.25rem; }\n .card-columns .card {\n display: inline-block;\n width: 100%; } }\n.breadcrumb {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem; }\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #868e96;\n content: \"/\"; }\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline; }\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none; }\n.breadcrumb-item.active {\n color: #868e96; }\n.pagination {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem; }\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6; }\n.page-link:focus, .page-link:hover {\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6; }\n.page-link:not([disabled]):not(.disabled) {\n cursor: pointer; }\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem; }\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem; }\n.page-item.active .page-link {\n z-index: 1;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff; }\n.page-item.disabled .page-link {\n color: #868e96;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6; }\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5; }\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem; }\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem; }\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5; }\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem; }\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem; }\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem; }\n.badge:empty {\n display: none; }\n.btn .badge {\n position: relative;\n top: -1px; }\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem; }\n.badge-primary {\n color: #fff;\n background-color: #007bff; }\n.badge-primary[href]:focus, .badge-primary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc; }\n.badge-secondary {\n color: #fff;\n background-color: #868e96; }\n.badge-secondary[href]:focus, .badge-secondary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #6c757d; }\n.badge-success {\n color: #fff;\n background-color: #28a745; }\n.badge-success[href]:focus, .badge-success[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34; }\n.badge-info {\n color: #fff;\n background-color: #17a2b8; }\n.badge-info[href]:focus, .badge-info[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b; }\n.badge-warning {\n color: #212529;\n background-color: #ffc107; }\n.badge-warning[href]:focus, .badge-warning[href]:hover {\n color: #212529;\n text-decoration: none;\n background-color: #d39e00; }\n.badge-danger {\n color: #fff;\n background-color: #dc3545; }\n.badge-danger[href]:focus, .badge-danger[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130; }\n.badge-light {\n color: #212529;\n background-color: #f8f9fa; }\n.badge-light[href]:focus, .badge-light[href]:hover {\n color: #212529;\n text-decoration: none;\n background-color: #dae0e5; }\n.badge-dark {\n color: #fff;\n background-color: #343a40; }\n.badge-dark[href]:focus, .badge-dark[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124; }\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem; }\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem; } }\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0; }\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem; }\n.alert-heading {\n color: inherit; }\n.alert-link {\n font-weight: 700; }\n.alert-dismissible {\n padding-right: 4rem; }\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit; }\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff; }\n.alert-primary hr {\n border-top-color: #9fcdff; }\n.alert-primary .alert-link {\n color: #002752; }\n.alert-secondary {\n color: #464a4e;\n background-color: #e7e8ea;\n border-color: #dddfe2; }\n.alert-secondary hr {\n border-top-color: #cfd2d6; }\n.alert-secondary .alert-link {\n color: #2e3133; }\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb; }\n.alert-success hr {\n border-top-color: #b1dfbb; }\n.alert-success .alert-link {\n color: #0b2e13; }\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb; }\n.alert-info hr {\n border-top-color: #abdde5; }\n.alert-info .alert-link {\n color: #062c33; }\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba; }\n.alert-warning hr {\n border-top-color: #ffe8a1; }\n.alert-warning .alert-link {\n color: #533f03; }\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb; }\n.alert-danger hr {\n border-top-color: #f1b0b7; }\n.alert-danger .alert-link {\n color: #491217; }\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe; }\n.alert-light hr {\n border-top-color: #ececf6; }\n.alert-light .alert-link {\n color: #686868; }\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca; }\n.alert-dark hr {\n border-top-color: #b9bbbe; }\n.alert-dark .alert-link {\n color: #040505; }\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0; }\n to {\n background-position: 0 0; } }\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0; }\n to {\n background-position: 0 0; } }\n.progress {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem; }\n.progress-bar {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n color: #fff;\n text-align: center;\n background-color: #007bff;\n -webkit-transition: width 0.6s ease;\n transition: width 0.6s ease; }\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem; }\n.progress-bar-animated {\n -webkit-animation: progress-bar-stripes 1s linear infinite;\n animation: progress-bar-stripes 1s linear infinite; }\n.media {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start; }\n.media-body {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1; }\n.list-group {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0; }\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit; }\n.list-group-item-action:focus, .list-group-item-action:hover {\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa; }\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef; }\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125); }\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem; }\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem; }\n.list-group-item:focus, .list-group-item:hover {\n z-index: 1;\n text-decoration: none; }\n.list-group-item.disabled, .list-group-item:disabled {\n color: #868e96;\n background-color: #fff; }\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff; }\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0; }\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0; }\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0; }\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff; }\na.list-group-item-primary, button.list-group-item-primary {\n color: #004085; }\na.list-group-item-primary:focus, a.list-group-item-primary:hover, button.list-group-item-primary:focus, button.list-group-item-primary:hover {\n color: #004085;\n background-color: #9fcdff; }\na.list-group-item-primary.active, button.list-group-item-primary.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085; }\n.list-group-item-secondary {\n color: #464a4e;\n background-color: #dddfe2; }\na.list-group-item-secondary, button.list-group-item-secondary {\n color: #464a4e; }\na.list-group-item-secondary:focus, a.list-group-item-secondary:hover, button.list-group-item-secondary:focus, button.list-group-item-secondary:hover {\n color: #464a4e;\n background-color: #cfd2d6; }\na.list-group-item-secondary.active, button.list-group-item-secondary.active {\n color: #fff;\n background-color: #464a4e;\n border-color: #464a4e; }\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb; }\na.list-group-item-success, button.list-group-item-success {\n color: #155724; }\na.list-group-item-success:focus, a.list-group-item-success:hover, button.list-group-item-success:focus, button.list-group-item-success:hover {\n color: #155724;\n background-color: #b1dfbb; }\na.list-group-item-success.active, button.list-group-item-success.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724; }\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb; }\na.list-group-item-info, button.list-group-item-info {\n color: #0c5460; }\na.list-group-item-info:focus, a.list-group-item-info:hover, button.list-group-item-info:focus, button.list-group-item-info:hover {\n color: #0c5460;\n background-color: #abdde5; }\na.list-group-item-info.active, button.list-group-item-info.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460; }\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba; }\na.list-group-item-warning, button.list-group-item-warning {\n color: #856404; }\na.list-group-item-warning:focus, a.list-group-item-warning:hover, button.list-group-item-warning:focus, button.list-group-item-warning:hover {\n color: #856404;\n background-color: #ffe8a1; }\na.list-group-item-warning.active, button.list-group-item-warning.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404; }\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb; }\na.list-group-item-danger, button.list-group-item-danger {\n color: #721c24; }\na.list-group-item-danger:focus, a.list-group-item-danger:hover, button.list-group-item-danger:focus, button.list-group-item-danger:hover {\n color: #721c24;\n background-color: #f1b0b7; }\na.list-group-item-danger.active, button.list-group-item-danger.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24; }\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe; }\na.list-group-item-light, button.list-group-item-light {\n color: #818182; }\na.list-group-item-light:focus, a.list-group-item-light:hover, button.list-group-item-light:focus, button.list-group-item-light:hover {\n color: #818182;\n background-color: #ececf6; }\na.list-group-item-light.active, button.list-group-item-light.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182; }\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca; }\na.list-group-item-dark, button.list-group-item-dark {\n color: #1b1e21; }\na.list-group-item-dark:focus, a.list-group-item-dark:hover, button.list-group-item-dark:focus, button.list-group-item-dark:hover {\n color: #1b1e21;\n background-color: #b9bbbe; }\na.list-group-item-dark.active, button.list-group-item-dark.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21; }\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5; }\n.close:focus, .close:hover {\n color: #000;\n text-decoration: none;\n opacity: .75; }\n.close:not([disabled]):not(.disabled) {\n cursor: pointer; }\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none; }\n.modal-open {\n overflow: hidden; }\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0; }\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto; }\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none; }\n.modal.fade .modal-dialog {\n -webkit-transition: -webkit-transform 0.3s ease-out;\n transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n -webkit-transform: translate(0, -25%);\n transform: translate(0, -25%); }\n.modal.show .modal-dialog {\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0); }\n.modal-dialog-centered {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n min-height: calc(100% - (0.5rem * 2)); }\n.modal-content {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0; }\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000; }\n.modal-backdrop.fade {\n opacity: 0; }\n.modal-backdrop.show {\n opacity: 0.5; }\n.modal-header {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 1rem;\n border-bottom: 1px solid #e9ecef;\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem; }\n.modal-header .close {\n padding: 1rem;\n margin: -1rem -1rem -1rem auto; }\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5; }\n.modal-body {\n position: relative;\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1rem; }\n.modal-footer {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #e9ecef; }\n.modal-footer > :not(:first-child) {\n margin-left: .25rem; }\n.modal-footer > :not(:last-child) {\n margin-right: .25rem; }\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll; }\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto; }\n .modal-dialog-centered {\n min-height: calc(100% - (1.75rem * 2)); }\n .modal-sm {\n max-width: 300px; } }\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px; } }\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0; }\n.tooltip.show {\n opacity: 0.9; }\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem; }\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid; }\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0; }\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0; }\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000; }\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem; }\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem; }\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000; }\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0; }\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0; }\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000; }\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem; }\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem; }\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000; }\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem; }\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem; }\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem; }\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid; }\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem; }\n.bs-popover-top .arrow, .bs-popover-auto[x-placement^=\"top\"] .arrow {\n bottom: calc((0.5rem + 1px) * -1); }\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before, .bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n border-width: 0.5rem 0.5rem 0; }\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n bottom: 0;\n border-top-color: rgba(0, 0, 0, 0.25); }\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n bottom: 1px;\n border-top-color: #fff; }\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem; }\n.bs-popover-right .arrow, .bs-popover-auto[x-placement^=\"right\"] .arrow {\n left: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0; }\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before, .bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n border-width: 0.5rem 0.5rem 0.5rem 0; }\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n left: 0;\n border-right-color: rgba(0, 0, 0, 0.25); }\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n left: 1px;\n border-right-color: #fff; }\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem; }\n.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n top: calc((0.5rem + 1px) * -1); }\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before, .bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n border-width: 0 0.5rem 0.5rem 0.5rem; }\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n top: 0;\n border-bottom-color: rgba(0, 0, 0, 0.25); }\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n top: 1px;\n border-bottom-color: #fff; }\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7; }\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem; }\n.bs-popover-left .arrow, .bs-popover-auto[x-placement^=\"left\"] .arrow {\n right: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0; }\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before, .bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n border-width: 0.5rem 0 0.5rem 0.5rem; }\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n right: 0;\n border-left-color: rgba(0, 0, 0, 0.25); }\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n right: 1px;\n border-left-color: #fff; }\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px); }\n.popover-header:empty {\n display: none; }\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529; }\n.carousel {\n position: relative; }\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden; }\n.carousel-item {\n position: relative;\n display: none;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n width: 100%;\n -webkit-transition: -webkit-transform 0.6s ease;\n transition: -webkit-transform 0.6s ease;\n transition: transform 0.6s ease;\n transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n perspective: 1000px; }\n.carousel-item.active, .carousel-item-next, .carousel-item-prev {\n display: block; }\n.carousel-item-next, .carousel-item-prev {\n position: absolute;\n top: 0; }\n.carousel-item-next.carousel-item-left, .carousel-item-prev.carousel-item-right {\n -webkit-transform: translateX(0);\n transform: translateX(0); }\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-next.carousel-item-left, .carousel-item-prev.carousel-item-right {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0); } }\n.carousel-item-next, .active.carousel-item-right {\n -webkit-transform: translateX(100%);\n transform: translateX(100%); }\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-next, .active.carousel-item-right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0); } }\n.carousel-item-prev, .active.carousel-item-left {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%); }\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-prev, .active.carousel-item-left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0); } }\n.carousel-control-prev, .carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5; }\n.carousel-control-prev:focus, .carousel-control-prev:hover, .carousel-control-next:focus, .carousel-control-next:hover {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9; }\n.carousel-control-prev {\n left: 0; }\n.carousel-control-next {\n right: 0; }\n.carousel-control-prev-icon, .carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%; }\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\"); }\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\"); }\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none; }\n.carousel-indicators li {\n position: relative;\n -webkit-box-flex: 0;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5); }\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\"; }\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\"; }\n.carousel-indicators .active {\n background-color: #fff; }\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center; }\n.align-baseline {\n vertical-align: baseline !important; }\n.align-top {\n vertical-align: top !important; }\n.align-middle {\n vertical-align: middle !important; }\n.align-bottom {\n vertical-align: bottom !important; }\n.align-text-bottom {\n vertical-align: text-bottom !important; }\n.align-text-top {\n vertical-align: text-top !important; }\n.bg-primary {\n background-color: #007bff !important; }\na.bg-primary:focus, a.bg-primary:hover, button.bg-primary:focus, button.bg-primary:hover {\n background-color: #0062cc !important; }\n.bg-secondary {\n background-color: #868e96 !important; }\na.bg-secondary:focus, a.bg-secondary:hover, button.bg-secondary:focus, button.bg-secondary:hover {\n background-color: #6c757d !important; }\n.bg-success {\n background-color: #28a745 !important; }\na.bg-success:focus, a.bg-success:hover, button.bg-success:focus, button.bg-success:hover {\n background-color: #1e7e34 !important; }\n.bg-info {\n background-color: #17a2b8 !important; }\na.bg-info:focus, a.bg-info:hover, button.bg-info:focus, button.bg-info:hover {\n background-color: #117a8b !important; }\n.bg-warning {\n background-color: #ffc107 !important; }\na.bg-warning:focus, a.bg-warning:hover, button.bg-warning:focus, button.bg-warning:hover {\n background-color: #d39e00 !important; }\n.bg-danger {\n background-color: #dc3545 !important; }\na.bg-danger:focus, a.bg-danger:hover, button.bg-danger:focus, button.bg-danger:hover {\n background-color: #bd2130 !important; }\n.bg-light {\n background-color: #f8f9fa !important; }\na.bg-light:focus, a.bg-light:hover, button.bg-light:focus, button.bg-light:hover {\n background-color: #dae0e5 !important; }\n.bg-dark {\n background-color: #343a40 !important; }\na.bg-dark:focus, a.bg-dark:hover, button.bg-dark:focus, button.bg-dark:hover {\n background-color: #1d2124 !important; }\n.bg-white {\n background-color: #fff !important; }\n.bg-transparent {\n background-color: transparent !important; }\n.border {\n border: 1px solid #e9ecef !important; }\n.border-0 {\n border: 0 !important; }\n.border-top-0 {\n border-top: 0 !important; }\n.border-right-0 {\n border-right: 0 !important; }\n.border-bottom-0 {\n border-bottom: 0 !important; }\n.border-left-0 {\n border-left: 0 !important; }\n.border-primary {\n border-color: #007bff !important; }\n.border-secondary {\n border-color: #868e96 !important; }\n.border-success {\n border-color: #28a745 !important; }\n.border-info {\n border-color: #17a2b8 !important; }\n.border-warning {\n border-color: #ffc107 !important; }\n.border-danger {\n border-color: #dc3545 !important; }\n.border-light {\n border-color: #f8f9fa !important; }\n.border-dark {\n border-color: #343a40 !important; }\n.border-white {\n border-color: #fff !important; }\n.rounded {\n border-radius: 0.25rem !important; }\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important; }\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important; }\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important; }\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important; }\n.rounded-circle {\n border-radius: 50% !important; }\n.rounded-0 {\n border-radius: 0 !important; }\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\"; }\n.d-none {\n display: none !important; }\n.d-inline {\n display: inline !important; }\n.d-inline-block {\n display: inline-block !important; }\n.d-block {\n display: block !important; }\n.d-table {\n display: table !important; }\n.d-table-row {\n display: table-row !important; }\n.d-table-cell {\n display: table-cell !important; }\n.d-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important; }\n.d-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; }\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important; }\n .d-sm-inline {\n display: inline !important; }\n .d-sm-inline-block {\n display: inline-block !important; }\n .d-sm-block {\n display: block !important; }\n .d-sm-table {\n display: table !important; }\n .d-sm-table-row {\n display: table-row !important; }\n .d-sm-table-cell {\n display: table-cell !important; }\n .d-sm-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important; }\n .d-sm-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important; }\n .d-md-inline {\n display: inline !important; }\n .d-md-inline-block {\n display: inline-block !important; }\n .d-md-block {\n display: block !important; }\n .d-md-table {\n display: table !important; }\n .d-md-table-row {\n display: table-row !important; }\n .d-md-table-cell {\n display: table-cell !important; }\n .d-md-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important; }\n .d-md-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important; }\n .d-lg-inline {\n display: inline !important; }\n .d-lg-inline-block {\n display: inline-block !important; }\n .d-lg-block {\n display: block !important; }\n .d-lg-table {\n display: table !important; }\n .d-lg-table-row {\n display: table-row !important; }\n .d-lg-table-cell {\n display: table-cell !important; }\n .d-lg-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important; }\n .d-lg-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important; }\n .d-xl-inline {\n display: inline !important; }\n .d-xl-inline-block {\n display: inline-block !important; }\n .d-xl-block {\n display: block !important; }\n .d-xl-table {\n display: table !important; }\n .d-xl-table-row {\n display: table-row !important; }\n .d-xl-table-cell {\n display: table-cell !important; }\n .d-xl-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important; }\n .d-xl-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n.d-print-block {\n display: none !important; }\n@media print {\n .d-print-block {\n display: block !important; } }\n.d-print-inline {\n display: none !important; }\n@media print {\n .d-print-inline {\n display: inline !important; } }\n.d-print-inline-block {\n display: none !important; }\n@media print {\n .d-print-inline-block {\n display: inline-block !important; } }\n@media print {\n .d-print-none {\n display: none !important; } }\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden; }\n.embed-responsive::before {\n display: block;\n content: \"\"; }\n.embed-responsive .embed-responsive-item, .embed-responsive iframe, .embed-responsive embed, .embed-responsive object, .embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0; }\n.embed-responsive-21by9::before {\n padding-top: 42.85714%; }\n.embed-responsive-16by9::before {\n padding-top: 56.25%; }\n.embed-responsive-4by3::before {\n padding-top: 75%; }\n.embed-responsive-1by1::before {\n padding-top: 100%; }\n.flex-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important; }\n.flex-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important; }\n.flex-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important; }\n.flex-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important; }\n.flex-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important; }\n.flex-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important; }\n.flex-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important; }\n.justify-content-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important; }\n.justify-content-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important; }\n.justify-content-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important; }\n.justify-content-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important; }\n.justify-content-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important; }\n.align-items-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important; }\n.align-items-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important; }\n.align-items-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important; }\n.align-items-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important; }\n.align-items-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important; }\n.align-content-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important; }\n.align-content-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important; }\n.align-content-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important; }\n.align-content-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important; }\n.align-content-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important; }\n.align-content-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important; }\n.align-self-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important; }\n.align-self-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important; }\n.align-self-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important; }\n.align-self-center {\n -ms-flex-item-align: center !important;\n align-self: center !important; }\n.align-self-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important; }\n.align-self-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important; }\n@media (min-width: 576px) {\n .flex-sm-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important; }\n .flex-sm-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important; }\n .flex-sm-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important; }\n .flex-sm-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important; }\n .flex-sm-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important; }\n .flex-sm-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important; }\n .flex-sm-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important; }\n .justify-content-sm-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important; }\n .justify-content-sm-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important; }\n .justify-content-sm-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important; }\n .justify-content-sm-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important; }\n .justify-content-sm-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important; }\n .align-items-sm-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important; }\n .align-items-sm-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important; }\n .align-items-sm-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important; }\n .align-items-sm-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important; }\n .align-items-sm-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important; }\n .align-content-sm-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important; }\n .align-content-sm-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important; }\n .align-content-sm-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important; }\n .align-content-sm-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important; }\n .align-content-sm-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important; }\n .align-content-sm-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important; }\n .align-self-sm-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important; }\n .align-self-sm-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important; }\n .align-self-sm-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important; }\n .align-self-sm-center {\n -ms-flex-item-align: center !important;\n align-self: center !important; }\n .align-self-sm-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important; }\n .align-self-sm-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important; } }\n@media (min-width: 768px) {\n .flex-md-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important; }\n .flex-md-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important; }\n .flex-md-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important; }\n .flex-md-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important; }\n .flex-md-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important; }\n .flex-md-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important; }\n .flex-md-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important; }\n .justify-content-md-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important; }\n .justify-content-md-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important; }\n .justify-content-md-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important; }\n .justify-content-md-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important; }\n .justify-content-md-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important; }\n .align-items-md-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important; }\n .align-items-md-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important; }\n .align-items-md-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important; }\n .align-items-md-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important; }\n .align-items-md-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important; }\n .align-content-md-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important; }\n .align-content-md-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important; }\n .align-content-md-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important; }\n .align-content-md-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important; }\n .align-content-md-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important; }\n .align-content-md-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important; }\n .align-self-md-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important; }\n .align-self-md-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important; }\n .align-self-md-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important; }\n .align-self-md-center {\n -ms-flex-item-align: center !important;\n align-self: center !important; }\n .align-self-md-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important; }\n .align-self-md-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important; } }\n@media (min-width: 992px) {\n .flex-lg-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important; }\n .flex-lg-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important; }\n .flex-lg-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important; }\n .flex-lg-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important; }\n .flex-lg-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important; }\n .flex-lg-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important; }\n .flex-lg-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important; }\n .justify-content-lg-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important; }\n .justify-content-lg-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important; }\n .justify-content-lg-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important; }\n .justify-content-lg-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important; }\n .justify-content-lg-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important; }\n .align-items-lg-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important; }\n .align-items-lg-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important; }\n .align-items-lg-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important; }\n .align-items-lg-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important; }\n .align-items-lg-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important; }\n .align-content-lg-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important; }\n .align-content-lg-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important; }\n .align-content-lg-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important; }\n .align-content-lg-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important; }\n .align-content-lg-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important; }\n .align-content-lg-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important; }\n .align-self-lg-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important; }\n .align-self-lg-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important; }\n .align-self-lg-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important; }\n .align-self-lg-center {\n -ms-flex-item-align: center !important;\n align-self: center !important; }\n .align-self-lg-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important; }\n .align-self-lg-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important; } }\n@media (min-width: 1200px) {\n .flex-xl-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important; }\n .flex-xl-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important; }\n .flex-xl-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important; }\n .flex-xl-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important; }\n .flex-xl-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important; }\n .flex-xl-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important; }\n .flex-xl-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important; }\n .justify-content-xl-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important; }\n .justify-content-xl-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important; }\n .justify-content-xl-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important; }\n .justify-content-xl-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important; }\n .justify-content-xl-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important; }\n .align-items-xl-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important; }\n .align-items-xl-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important; }\n .align-items-xl-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important; }\n .align-items-xl-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important; }\n .align-items-xl-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important; }\n .align-content-xl-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important; }\n .align-content-xl-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important; }\n .align-content-xl-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important; }\n .align-content-xl-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important; }\n .align-content-xl-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important; }\n .align-content-xl-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important; }\n .align-self-xl-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important; }\n .align-self-xl-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important; }\n .align-self-xl-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important; }\n .align-self-xl-center {\n -ms-flex-item-align: center !important;\n align-self: center !important; }\n .align-self-xl-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important; }\n .align-self-xl-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important; } }\n.float-left {\n float: left !important; }\n.float-right {\n float: right !important; }\n.float-none {\n float: none !important; }\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important; }\n .float-sm-right {\n float: right !important; }\n .float-sm-none {\n float: none !important; } }\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important; }\n .float-md-right {\n float: right !important; }\n .float-md-none {\n float: none !important; } }\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important; }\n .float-lg-right {\n float: right !important; }\n .float-lg-none {\n float: none !important; } }\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important; }\n .float-xl-right {\n float: right !important; }\n .float-xl-none {\n float: none !important; } }\n.position-static {\n position: static !important; }\n.position-relative {\n position: relative !important; }\n.position-absolute {\n position: absolute !important; }\n.position-fixed {\n position: fixed !important; }\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important; }\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030; }\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030; }\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n .sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020; } }\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n border: 0; }\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n -webkit-clip-path: none;\n clip-path: none; }\n.w-25 {\n width: 25% !important; }\n.w-50 {\n width: 50% !important; }\n.w-75 {\n width: 75% !important; }\n.w-100 {\n width: 100% !important; }\n.h-25 {\n height: 25% !important; }\n.h-50 {\n height: 50% !important; }\n.h-75 {\n height: 75% !important; }\n.h-100 {\n height: 100% !important; }\n.mw-100 {\n max-width: 100% !important; }\n.mh-100 {\n max-height: 100% !important; }\n.m-0 {\n margin: 0 !important; }\n.mt-0, .my-0 {\n margin-top: 0 !important; }\n.mr-0, .mx-0 {\n margin-right: 0 !important; }\n.mb-0, .my-0 {\n margin-bottom: 0 !important; }\n.ml-0, .mx-0 {\n margin-left: 0 !important; }\n.m-1 {\n margin: 0.25rem !important; }\n.mt-1, .my-1 {\n margin-top: 0.25rem !important; }\n.mr-1, .mx-1 {\n margin-right: 0.25rem !important; }\n.mb-1, .my-1 {\n margin-bottom: 0.25rem !important; }\n.ml-1, .mx-1 {\n margin-left: 0.25rem !important; }\n.m-2 {\n margin: 0.5rem !important; }\n.mt-2, .my-2 {\n margin-top: 0.5rem !important; }\n.mr-2, .mx-2 {\n margin-right: 0.5rem !important; }\n.mb-2, .my-2 {\n margin-bottom: 0.5rem !important; }\n.ml-2, .mx-2 {\n margin-left: 0.5rem !important; }\n.m-3 {\n margin: 1rem !important; }\n.mt-3, .my-3 {\n margin-top: 1rem !important; }\n.mr-3, .mx-3 {\n margin-right: 1rem !important; }\n.mb-3, .my-3 {\n margin-bottom: 1rem !important; }\n.ml-3, .mx-3 {\n margin-left: 1rem !important; }\n.m-4 {\n margin: 1.5rem !important; }\n.mt-4, .my-4 {\n margin-top: 1.5rem !important; }\n.mr-4, .mx-4 {\n margin-right: 1.5rem !important; }\n.mb-4, .my-4 {\n margin-bottom: 1.5rem !important; }\n.ml-4, .mx-4 {\n margin-left: 1.5rem !important; }\n.m-5 {\n margin: 3rem !important; }\n.mt-5, .my-5 {\n margin-top: 3rem !important; }\n.mr-5, .mx-5 {\n margin-right: 3rem !important; }\n.mb-5, .my-5 {\n margin-bottom: 3rem !important; }\n.ml-5, .mx-5 {\n margin-left: 3rem !important; }\n.p-0 {\n padding: 0 !important; }\n.pt-0, .py-0 {\n padding-top: 0 !important; }\n.pr-0, .px-0 {\n padding-right: 0 !important; }\n.pb-0, .py-0 {\n padding-bottom: 0 !important; }\n.pl-0, .px-0 {\n padding-left: 0 !important; }\n.p-1 {\n padding: 0.25rem !important; }\n.pt-1, .py-1 {\n padding-top: 0.25rem !important; }\n.pr-1, .px-1 {\n padding-right: 0.25rem !important; }\n.pb-1, .py-1 {\n padding-bottom: 0.25rem !important; }\n.pl-1, .px-1 {\n padding-left: 0.25rem !important; }\n.p-2 {\n padding: 0.5rem !important; }\n.pt-2, .py-2 {\n padding-top: 0.5rem !important; }\n.pr-2, .px-2 {\n padding-right: 0.5rem !important; }\n.pb-2, .py-2 {\n padding-bottom: 0.5rem !important; }\n.pl-2, .px-2 {\n padding-left: 0.5rem !important; }\n.p-3 {\n padding: 1rem !important; }\n.pt-3, .py-3 {\n padding-top: 1rem !important; }\n.pr-3, .px-3 {\n padding-right: 1rem !important; }\n.pb-3, .py-3 {\n padding-bottom: 1rem !important; }\n.pl-3, .px-3 {\n padding-left: 1rem !important; }\n.p-4 {\n padding: 1.5rem !important; }\n.pt-4, .py-4 {\n padding-top: 1.5rem !important; }\n.pr-4, .px-4 {\n padding-right: 1.5rem !important; }\n.pb-4, .py-4 {\n padding-bottom: 1.5rem !important; }\n.pl-4, .px-4 {\n padding-left: 1.5rem !important; }\n.p-5 {\n padding: 3rem !important; }\n.pt-5, .py-5 {\n padding-top: 3rem !important; }\n.pr-5, .px-5 {\n padding-right: 3rem !important; }\n.pb-5, .py-5 {\n padding-bottom: 3rem !important; }\n.pl-5, .px-5 {\n padding-left: 3rem !important; }\n.m-auto {\n margin: auto !important; }\n.mt-auto, .my-auto {\n margin-top: auto !important; }\n.mr-auto, .mx-auto {\n margin-right: auto !important; }\n.mb-auto, .my-auto {\n margin-bottom: auto !important; }\n.ml-auto, .mx-auto {\n margin-left: auto !important; }\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important; }\n .mt-sm-0, .my-sm-0 {\n margin-top: 0 !important; }\n .mr-sm-0, .mx-sm-0 {\n margin-right: 0 !important; }\n .mb-sm-0, .my-sm-0 {\n margin-bottom: 0 !important; }\n .ml-sm-0, .mx-sm-0 {\n margin-left: 0 !important; }\n .m-sm-1 {\n margin: 0.25rem !important; }\n .mt-sm-1, .my-sm-1 {\n margin-top: 0.25rem !important; }\n .mr-sm-1, .mx-sm-1 {\n margin-right: 0.25rem !important; }\n .mb-sm-1, .my-sm-1 {\n margin-bottom: 0.25rem !important; }\n .ml-sm-1, .mx-sm-1 {\n margin-left: 0.25rem !important; }\n .m-sm-2 {\n margin: 0.5rem !important; }\n .mt-sm-2, .my-sm-2 {\n margin-top: 0.5rem !important; }\n .mr-sm-2, .mx-sm-2 {\n margin-right: 0.5rem !important; }\n .mb-sm-2, .my-sm-2 {\n margin-bottom: 0.5rem !important; }\n .ml-sm-2, .mx-sm-2 {\n margin-left: 0.5rem !important; }\n .m-sm-3 {\n margin: 1rem !important; }\n .mt-sm-3, .my-sm-3 {\n margin-top: 1rem !important; }\n .mr-sm-3, .mx-sm-3 {\n margin-right: 1rem !important; }\n .mb-sm-3, .my-sm-3 {\n margin-bottom: 1rem !important; }\n .ml-sm-3, .mx-sm-3 {\n margin-left: 1rem !important; }\n .m-sm-4 {\n margin: 1.5rem !important; }\n .mt-sm-4, .my-sm-4 {\n margin-top: 1.5rem !important; }\n .mr-sm-4, .mx-sm-4 {\n margin-right: 1.5rem !important; }\n .mb-sm-4, .my-sm-4 {\n margin-bottom: 1.5rem !important; }\n .ml-sm-4, .mx-sm-4 {\n margin-left: 1.5rem !important; }\n .m-sm-5 {\n margin: 3rem !important; }\n .mt-sm-5, .my-sm-5 {\n margin-top: 3rem !important; }\n .mr-sm-5, .mx-sm-5 {\n margin-right: 3rem !important; }\n .mb-sm-5, .my-sm-5 {\n margin-bottom: 3rem !important; }\n .ml-sm-5, .mx-sm-5 {\n margin-left: 3rem !important; }\n .p-sm-0 {\n padding: 0 !important; }\n .pt-sm-0, .py-sm-0 {\n padding-top: 0 !important; }\n .pr-sm-0, .px-sm-0 {\n padding-right: 0 !important; }\n .pb-sm-0, .py-sm-0 {\n padding-bottom: 0 !important; }\n .pl-sm-0, .px-sm-0 {\n padding-left: 0 !important; }\n .p-sm-1 {\n padding: 0.25rem !important; }\n .pt-sm-1, .py-sm-1 {\n padding-top: 0.25rem !important; }\n .pr-sm-1, .px-sm-1 {\n padding-right: 0.25rem !important; }\n .pb-sm-1, .py-sm-1 {\n padding-bottom: 0.25rem !important; }\n .pl-sm-1, .px-sm-1 {\n padding-left: 0.25rem !important; }\n .p-sm-2 {\n padding: 0.5rem !important; }\n .pt-sm-2, .py-sm-2 {\n padding-top: 0.5rem !important; }\n .pr-sm-2, .px-sm-2 {\n padding-right: 0.5rem !important; }\n .pb-sm-2, .py-sm-2 {\n padding-bottom: 0.5rem !important; }\n .pl-sm-2, .px-sm-2 {\n padding-left: 0.5rem !important; }\n .p-sm-3 {\n padding: 1rem !important; }\n .pt-sm-3, .py-sm-3 {\n padding-top: 1rem !important; }\n .pr-sm-3, .px-sm-3 {\n padding-right: 1rem !important; }\n .pb-sm-3, .py-sm-3 {\n padding-bottom: 1rem !important; }\n .pl-sm-3, .px-sm-3 {\n padding-left: 1rem !important; }\n .p-sm-4 {\n padding: 1.5rem !important; }\n .pt-sm-4, .py-sm-4 {\n padding-top: 1.5rem !important; }\n .pr-sm-4, .px-sm-4 {\n padding-right: 1.5rem !important; }\n .pb-sm-4, .py-sm-4 {\n padding-bottom: 1.5rem !important; }\n .pl-sm-4, .px-sm-4 {\n padding-left: 1.5rem !important; }\n .p-sm-5 {\n padding: 3rem !important; }\n .pt-sm-5, .py-sm-5 {\n padding-top: 3rem !important; }\n .pr-sm-5, .px-sm-5 {\n padding-right: 3rem !important; }\n .pb-sm-5, .py-sm-5 {\n padding-bottom: 3rem !important; }\n .pl-sm-5, .px-sm-5 {\n padding-left: 3rem !important; }\n .m-sm-auto {\n margin: auto !important; }\n .mt-sm-auto, .my-sm-auto {\n margin-top: auto !important; }\n .mr-sm-auto, .mx-sm-auto {\n margin-right: auto !important; }\n .mb-sm-auto, .my-sm-auto {\n margin-bottom: auto !important; }\n .ml-sm-auto, .mx-sm-auto {\n margin-left: auto !important; } }\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important; }\n .mt-md-0, .my-md-0 {\n margin-top: 0 !important; }\n .mr-md-0, .mx-md-0 {\n margin-right: 0 !important; }\n .mb-md-0, .my-md-0 {\n margin-bottom: 0 !important; }\n .ml-md-0, .mx-md-0 {\n margin-left: 0 !important; }\n .m-md-1 {\n margin: 0.25rem !important; }\n .mt-md-1, .my-md-1 {\n margin-top: 0.25rem !important; }\n .mr-md-1, .mx-md-1 {\n margin-right: 0.25rem !important; }\n .mb-md-1, .my-md-1 {\n margin-bottom: 0.25rem !important; }\n .ml-md-1, .mx-md-1 {\n margin-left: 0.25rem !important; }\n .m-md-2 {\n margin: 0.5rem !important; }\n .mt-md-2, .my-md-2 {\n margin-top: 0.5rem !important; }\n .mr-md-2, .mx-md-2 {\n margin-right: 0.5rem !important; }\n .mb-md-2, .my-md-2 {\n margin-bottom: 0.5rem !important; }\n .ml-md-2, .mx-md-2 {\n margin-left: 0.5rem !important; }\n .m-md-3 {\n margin: 1rem !important; }\n .mt-md-3, .my-md-3 {\n margin-top: 1rem !important; }\n .mr-md-3, .mx-md-3 {\n margin-right: 1rem !important; }\n .mb-md-3, .my-md-3 {\n margin-bottom: 1rem !important; }\n .ml-md-3, .mx-md-3 {\n margin-left: 1rem !important; }\n .m-md-4 {\n margin: 1.5rem !important; }\n .mt-md-4, .my-md-4 {\n margin-top: 1.5rem !important; }\n .mr-md-4, .mx-md-4 {\n margin-right: 1.5rem !important; }\n .mb-md-4, .my-md-4 {\n margin-bottom: 1.5rem !important; }\n .ml-md-4, .mx-md-4 {\n margin-left: 1.5rem !important; }\n .m-md-5 {\n margin: 3rem !important; }\n .mt-md-5, .my-md-5 {\n margin-top: 3rem !important; }\n .mr-md-5, .mx-md-5 {\n margin-right: 3rem !important; }\n .mb-md-5, .my-md-5 {\n margin-bottom: 3rem !important; }\n .ml-md-5, .mx-md-5 {\n margin-left: 3rem !important; }\n .p-md-0 {\n padding: 0 !important; }\n .pt-md-0, .py-md-0 {\n padding-top: 0 !important; }\n .pr-md-0, .px-md-0 {\n padding-right: 0 !important; }\n .pb-md-0, .py-md-0 {\n padding-bottom: 0 !important; }\n .pl-md-0, .px-md-0 {\n padding-left: 0 !important; }\n .p-md-1 {\n padding: 0.25rem !important; }\n .pt-md-1, .py-md-1 {\n padding-top: 0.25rem !important; }\n .pr-md-1, .px-md-1 {\n padding-right: 0.25rem !important; }\n .pb-md-1, .py-md-1 {\n padding-bottom: 0.25rem !important; }\n .pl-md-1, .px-md-1 {\n padding-left: 0.25rem !important; }\n .p-md-2 {\n padding: 0.5rem !important; }\n .pt-md-2, .py-md-2 {\n padding-top: 0.5rem !important; }\n .pr-md-2, .px-md-2 {\n padding-right: 0.5rem !important; }\n .pb-md-2, .py-md-2 {\n padding-bottom: 0.5rem !important; }\n .pl-md-2, .px-md-2 {\n padding-left: 0.5rem !important; }\n .p-md-3 {\n padding: 1rem !important; }\n .pt-md-3, .py-md-3 {\n padding-top: 1rem !important; }\n .pr-md-3, .px-md-3 {\n padding-right: 1rem !important; }\n .pb-md-3, .py-md-3 {\n padding-bottom: 1rem !important; }\n .pl-md-3, .px-md-3 {\n padding-left: 1rem !important; }\n .p-md-4 {\n padding: 1.5rem !important; }\n .pt-md-4, .py-md-4 {\n padding-top: 1.5rem !important; }\n .pr-md-4, .px-md-4 {\n padding-right: 1.5rem !important; }\n .pb-md-4, .py-md-4 {\n padding-bottom: 1.5rem !important; }\n .pl-md-4, .px-md-4 {\n padding-left: 1.5rem !important; }\n .p-md-5 {\n padding: 3rem !important; }\n .pt-md-5, .py-md-5 {\n padding-top: 3rem !important; }\n .pr-md-5, .px-md-5 {\n padding-right: 3rem !important; }\n .pb-md-5, .py-md-5 {\n padding-bottom: 3rem !important; }\n .pl-md-5, .px-md-5 {\n padding-left: 3rem !important; }\n .m-md-auto {\n margin: auto !important; }\n .mt-md-auto, .my-md-auto {\n margin-top: auto !important; }\n .mr-md-auto, .mx-md-auto {\n margin-right: auto !important; }\n .mb-md-auto, .my-md-auto {\n margin-bottom: auto !important; }\n .ml-md-auto, .mx-md-auto {\n margin-left: auto !important; } }\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important; }\n .mt-lg-0, .my-lg-0 {\n margin-top: 0 !important; }\n .mr-lg-0, .mx-lg-0 {\n margin-right: 0 !important; }\n .mb-lg-0, .my-lg-0 {\n margin-bottom: 0 !important; }\n .ml-lg-0, .mx-lg-0 {\n margin-left: 0 !important; }\n .m-lg-1 {\n margin: 0.25rem !important; }\n .mt-lg-1, .my-lg-1 {\n margin-top: 0.25rem !important; }\n .mr-lg-1, .mx-lg-1 {\n margin-right: 0.25rem !important; }\n .mb-lg-1, .my-lg-1 {\n margin-bottom: 0.25rem !important; }\n .ml-lg-1, .mx-lg-1 {\n margin-left: 0.25rem !important; }\n .m-lg-2 {\n margin: 0.5rem !important; }\n .mt-lg-2, .my-lg-2 {\n margin-top: 0.5rem !important; }\n .mr-lg-2, .mx-lg-2 {\n margin-right: 0.5rem !important; }\n .mb-lg-2, .my-lg-2 {\n margin-bottom: 0.5rem !important; }\n .ml-lg-2, .mx-lg-2 {\n margin-left: 0.5rem !important; }\n .m-lg-3 {\n margin: 1rem !important; }\n .mt-lg-3, .my-lg-3 {\n margin-top: 1rem !important; }\n .mr-lg-3, .mx-lg-3 {\n margin-right: 1rem !important; }\n .mb-lg-3, .my-lg-3 {\n margin-bottom: 1rem !important; }\n .ml-lg-3, .mx-lg-3 {\n margin-left: 1rem !important; }\n .m-lg-4 {\n margin: 1.5rem !important; }\n .mt-lg-4, .my-lg-4 {\n margin-top: 1.5rem !important; }\n .mr-lg-4, .mx-lg-4 {\n margin-right: 1.5rem !important; }\n .mb-lg-4, .my-lg-4 {\n margin-bottom: 1.5rem !important; }\n .ml-lg-4, .mx-lg-4 {\n margin-left: 1.5rem !important; }\n .m-lg-5 {\n margin: 3rem !important; }\n .mt-lg-5, .my-lg-5 {\n margin-top: 3rem !important; }\n .mr-lg-5, .mx-lg-5 {\n margin-right: 3rem !important; }\n .mb-lg-5, .my-lg-5 {\n margin-bottom: 3rem !important; }\n .ml-lg-5, .mx-lg-5 {\n margin-left: 3rem !important; }\n .p-lg-0 {\n padding: 0 !important; }\n .pt-lg-0, .py-lg-0 {\n padding-top: 0 !important; }\n .pr-lg-0, .px-lg-0 {\n padding-right: 0 !important; }\n .pb-lg-0, .py-lg-0 {\n padding-bottom: 0 !important; }\n .pl-lg-0, .px-lg-0 {\n padding-left: 0 !important; }\n .p-lg-1 {\n padding: 0.25rem !important; }\n .pt-lg-1, .py-lg-1 {\n padding-top: 0.25rem !important; }\n .pr-lg-1, .px-lg-1 {\n padding-right: 0.25rem !important; }\n .pb-lg-1, .py-lg-1 {\n padding-bottom: 0.25rem !important; }\n .pl-lg-1, .px-lg-1 {\n padding-left: 0.25rem !important; }\n .p-lg-2 {\n padding: 0.5rem !important; }\n .pt-lg-2, .py-lg-2 {\n padding-top: 0.5rem !important; }\n .pr-lg-2, .px-lg-2 {\n padding-right: 0.5rem !important; }\n .pb-lg-2, .py-lg-2 {\n padding-bottom: 0.5rem !important; }\n .pl-lg-2, .px-lg-2 {\n padding-left: 0.5rem !important; }\n .p-lg-3 {\n padding: 1rem !important; }\n .pt-lg-3, .py-lg-3 {\n padding-top: 1rem !important; }\n .pr-lg-3, .px-lg-3 {\n padding-right: 1rem !important; }\n .pb-lg-3, .py-lg-3 {\n padding-bottom: 1rem !important; }\n .pl-lg-3, .px-lg-3 {\n padding-left: 1rem !important; }\n .p-lg-4 {\n padding: 1.5rem !important; }\n .pt-lg-4, .py-lg-4 {\n padding-top: 1.5rem !important; }\n .pr-lg-4, .px-lg-4 {\n padding-right: 1.5rem !important; }\n .pb-lg-4, .py-lg-4 {\n padding-bottom: 1.5rem !important; }\n .pl-lg-4, .px-lg-4 {\n padding-left: 1.5rem !important; }\n .p-lg-5 {\n padding: 3rem !important; }\n .pt-lg-5, .py-lg-5 {\n padding-top: 3rem !important; }\n .pr-lg-5, .px-lg-5 {\n padding-right: 3rem !important; }\n .pb-lg-5, .py-lg-5 {\n padding-bottom: 3rem !important; }\n .pl-lg-5, .px-lg-5 {\n padding-left: 3rem !important; }\n .m-lg-auto {\n margin: auto !important; }\n .mt-lg-auto, .my-lg-auto {\n margin-top: auto !important; }\n .mr-lg-auto, .mx-lg-auto {\n margin-right: auto !important; }\n .mb-lg-auto, .my-lg-auto {\n margin-bottom: auto !important; }\n .ml-lg-auto, .mx-lg-auto {\n margin-left: auto !important; } }\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important; }\n .mt-xl-0, .my-xl-0 {\n margin-top: 0 !important; }\n .mr-xl-0, .mx-xl-0 {\n margin-right: 0 !important; }\n .mb-xl-0, .my-xl-0 {\n margin-bottom: 0 !important; }\n .ml-xl-0, .mx-xl-0 {\n margin-left: 0 !important; }\n .m-xl-1 {\n margin: 0.25rem !important; }\n .mt-xl-1, .my-xl-1 {\n margin-top: 0.25rem !important; }\n .mr-xl-1, .mx-xl-1 {\n margin-right: 0.25rem !important; }\n .mb-xl-1, .my-xl-1 {\n margin-bottom: 0.25rem !important; }\n .ml-xl-1, .mx-xl-1 {\n margin-left: 0.25rem !important; }\n .m-xl-2 {\n margin: 0.5rem !important; }\n .mt-xl-2, .my-xl-2 {\n margin-top: 0.5rem !important; }\n .mr-xl-2, .mx-xl-2 {\n margin-right: 0.5rem !important; }\n .mb-xl-2, .my-xl-2 {\n margin-bottom: 0.5rem !important; }\n .ml-xl-2, .mx-xl-2 {\n margin-left: 0.5rem !important; }\n .m-xl-3 {\n margin: 1rem !important; }\n .mt-xl-3, .my-xl-3 {\n margin-top: 1rem !important; }\n .mr-xl-3, .mx-xl-3 {\n margin-right: 1rem !important; }\n .mb-xl-3, .my-xl-3 {\n margin-bottom: 1rem !important; }\n .ml-xl-3, .mx-xl-3 {\n margin-left: 1rem !important; }\n .m-xl-4 {\n margin: 1.5rem !important; }\n .mt-xl-4, .my-xl-4 {\n margin-top: 1.5rem !important; }\n .mr-xl-4, .mx-xl-4 {\n margin-right: 1.5rem !important; }\n .mb-xl-4, .my-xl-4 {\n margin-bottom: 1.5rem !important; }\n .ml-xl-4, .mx-xl-4 {\n margin-left: 1.5rem !important; }\n .m-xl-5 {\n margin: 3rem !important; }\n .mt-xl-5, .my-xl-5 {\n margin-top: 3rem !important; }\n .mr-xl-5, .mx-xl-5 {\n margin-right: 3rem !important; }\n .mb-xl-5, .my-xl-5 {\n margin-bottom: 3rem !important; }\n .ml-xl-5, .mx-xl-5 {\n margin-left: 3rem !important; }\n .p-xl-0 {\n padding: 0 !important; }\n .pt-xl-0, .py-xl-0 {\n padding-top: 0 !important; }\n .pr-xl-0, .px-xl-0 {\n padding-right: 0 !important; }\n .pb-xl-0, .py-xl-0 {\n padding-bottom: 0 !important; }\n .pl-xl-0, .px-xl-0 {\n padding-left: 0 !important; }\n .p-xl-1 {\n padding: 0.25rem !important; }\n .pt-xl-1, .py-xl-1 {\n padding-top: 0.25rem !important; }\n .pr-xl-1, .px-xl-1 {\n padding-right: 0.25rem !important; }\n .pb-xl-1, .py-xl-1 {\n padding-bottom: 0.25rem !important; }\n .pl-xl-1, .px-xl-1 {\n padding-left: 0.25rem !important; }\n .p-xl-2 {\n padding: 0.5rem !important; }\n .pt-xl-2, .py-xl-2 {\n padding-top: 0.5rem !important; }\n .pr-xl-2, .px-xl-2 {\n padding-right: 0.5rem !important; }\n .pb-xl-2, .py-xl-2 {\n padding-bottom: 0.5rem !important; }\n .pl-xl-2, .px-xl-2 {\n padding-left: 0.5rem !important; }\n .p-xl-3 {\n padding: 1rem !important; }\n .pt-xl-3, .py-xl-3 {\n padding-top: 1rem !important; }\n .pr-xl-3, .px-xl-3 {\n padding-right: 1rem !important; }\n .pb-xl-3, .py-xl-3 {\n padding-bottom: 1rem !important; }\n .pl-xl-3, .px-xl-3 {\n padding-left: 1rem !important; }\n .p-xl-4 {\n padding: 1.5rem !important; }\n .pt-xl-4, .py-xl-4 {\n padding-top: 1.5rem !important; }\n .pr-xl-4, .px-xl-4 {\n padding-right: 1.5rem !important; }\n .pb-xl-4, .py-xl-4 {\n padding-bottom: 1.5rem !important; }\n .pl-xl-4, .px-xl-4 {\n padding-left: 1.5rem !important; }\n .p-xl-5 {\n padding: 3rem !important; }\n .pt-xl-5, .py-xl-5 {\n padding-top: 3rem !important; }\n .pr-xl-5, .px-xl-5 {\n padding-right: 3rem !important; }\n .pb-xl-5, .py-xl-5 {\n padding-bottom: 3rem !important; }\n .pl-xl-5, .px-xl-5 {\n padding-left: 3rem !important; }\n .m-xl-auto {\n margin: auto !important; }\n .mt-xl-auto, .my-xl-auto {\n margin-top: auto !important; }\n .mr-xl-auto, .mx-xl-auto {\n margin-right: auto !important; }\n .mb-xl-auto, .my-xl-auto {\n margin-bottom: auto !important; }\n .ml-xl-auto, .mx-xl-auto {\n margin-left: auto !important; } }\n.text-justify {\n text-align: justify !important; }\n.text-nowrap {\n white-space: nowrap !important; }\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; }\n.text-left {\n text-align: left !important; }\n.text-right {\n text-align: right !important; }\n.text-center {\n text-align: center !important; }\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important; }\n .text-sm-right {\n text-align: right !important; }\n .text-sm-center {\n text-align: center !important; } }\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important; }\n .text-md-right {\n text-align: right !important; }\n .text-md-center {\n text-align: center !important; } }\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important; }\n .text-lg-right {\n text-align: right !important; }\n .text-lg-center {\n text-align: center !important; } }\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important; }\n .text-xl-right {\n text-align: right !important; }\n .text-xl-center {\n text-align: center !important; } }\n.text-lowercase {\n text-transform: lowercase !important; }\n.text-uppercase {\n text-transform: uppercase !important; }\n.text-capitalize {\n text-transform: capitalize !important; }\n.font-weight-light {\n font-weight: 300 !important; }\n.font-weight-normal {\n font-weight: 400 !important; }\n.font-weight-bold {\n font-weight: 700 !important; }\n.font-italic {\n font-style: italic !important; }\n.text-white {\n color: #fff !important; }\n.text-primary {\n color: #007bff !important; }\na.text-primary:focus, a.text-primary:hover {\n color: #0062cc !important; }\n.text-secondary {\n color: #868e96 !important; }\na.text-secondary:focus, a.text-secondary:hover {\n color: #6c757d !important; }\n.text-success {\n color: #28a745 !important; }\na.text-success:focus, a.text-success:hover {\n color: #1e7e34 !important; }\n.text-info {\n color: #17a2b8 !important; }\na.text-info:focus, a.text-info:hover {\n color: #117a8b !important; }\n.text-warning {\n color: #ffc107 !important; }\na.text-warning:focus, a.text-warning:hover {\n color: #d39e00 !important; }\n.text-danger {\n color: #dc3545 !important; }\na.text-danger:focus, a.text-danger:hover {\n color: #bd2130 !important; }\n.text-light {\n color: #f8f9fa !important; }\na.text-light:focus, a.text-light:hover {\n color: #dae0e5 !important; }\n.text-dark {\n color: #343a40 !important; }\na.text-dark:focus, a.text-dark:hover {\n color: #1d2124 !important; }\n.text-muted {\n color: #868e96 !important; }\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0; }\n.visible {\n visibility: visible !important; }\n.invisible {\n visibility: hidden !important; }\n@media print {\n *, *::before, *::after {\n text-shadow: none !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important; }\n a, a:visited {\n text-decoration: underline; }\n abbr[title]::after {\n content: \" (\" attr(title) \")\"; }\n pre {\n white-space: pre-wrap !important; }\n pre, blockquote {\n border: 1px solid #999;\n page-break-inside: avoid; }\n thead {\n display: table-header-group; }\n tr, img {\n page-break-inside: avoid; }\n p, h2, h3 {\n orphans: 3;\n widows: 3; }\n h2, h3 {\n page-break-after: avoid; }\n .navbar {\n display: none; }\n .badge {\n border: 1px solid #000; }\n .table {\n border-collapse: collapse !important; }\n .table td, .table th {\n background-color: #fff !important; }\n .table-bordered th, .table-bordered td {\n border: 1px solid #ddd !important; } }\n.desk {\n padding: 0px; }\n.nav {\n display: none;\n border-bottom: 1px solid #e9ecef;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n.two-column {\n display: grid;\n grid-template-columns: 1fr 4fr;\n grid-auto-rows: minmax(100%, auto); }\n.main, .sidebar {\n padding: 2rem;\n min-height: 100vh; }\n.sidebar {\n border-right: 1px solid #e9ecef; }\n.hide {\n display: none !important; }\n.page-error {\n text-align: center;\n padding: 200px 0px; }\n.form-body .form-toolbar {\n height: 2rem;\n margin-bottom: 1rem; }\n.form-body .alert {\n margin-top: 1rem; }\n.dropdown-menu-right {\n right: 0;\n left: auto; }\n.list-search {\n max-width: 400px;\n margin-bottom: 1rem; }\n", ""]);
|
|
|
|
// exports
|
|
|
|
|
|
/***/ }),
|
|
/* 7 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
/*
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
Author Tobias Koppers @sokra
|
|
*/
|
|
|
|
var stylesInDom = {};
|
|
|
|
var memoize = function (fn) {
|
|
var memo;
|
|
|
|
return function () {
|
|
if (typeof memo === "undefined") memo = fn.apply(this, arguments);
|
|
return memo;
|
|
};
|
|
};
|
|
|
|
var isOldIE = memoize(function () {
|
|
// Test for IE <= 9 as proposed by Browserhacks
|
|
// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
|
|
// Tests for existence of standard globals is to allow style-loader
|
|
// to operate correctly into non-standard environments
|
|
// @see https://github.com/webpack-contrib/style-loader/issues/177
|
|
return window && document && document.all && !window.atob;
|
|
});
|
|
|
|
var getElement = (function (fn) {
|
|
var memo = {};
|
|
|
|
return function(selector) {
|
|
if (typeof memo[selector] === "undefined") {
|
|
var styleTarget = fn.call(this, selector);
|
|
// Special case to return head of iframe instead of iframe itself
|
|
if (styleTarget instanceof window.HTMLIFrameElement) {
|
|
try {
|
|
// This will throw an exception if access to iframe is blocked
|
|
// due to cross-origin restrictions
|
|
styleTarget = styleTarget.contentDocument.head;
|
|
} catch(e) {
|
|
styleTarget = null;
|
|
}
|
|
}
|
|
memo[selector] = styleTarget;
|
|
}
|
|
return memo[selector]
|
|
};
|
|
})(function (target) {
|
|
return document.querySelector(target)
|
|
});
|
|
|
|
var singleton = null;
|
|
var singletonCounter = 0;
|
|
var stylesInsertedAtTop = [];
|
|
|
|
var fixUrls = __webpack_require__(8);
|
|
|
|
module.exports = function(list, options) {
|
|
if (typeof DEBUG !== "undefined" && DEBUG) {
|
|
if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
|
|
}
|
|
|
|
options = options || {};
|
|
|
|
options.attrs = typeof options.attrs === "object" ? options.attrs : {};
|
|
|
|
// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
|
|
// tags it will allow on a page
|
|
if (!options.singleton && typeof options.singleton !== "boolean") options.singleton = isOldIE();
|
|
|
|
// By default, add <style> tags to the <head> element
|
|
if (!options.insertInto) options.insertInto = "head";
|
|
|
|
// By default, add <style> tags to the bottom of the target
|
|
if (!options.insertAt) options.insertAt = "bottom";
|
|
|
|
var styles = listToStyles(list, options);
|
|
|
|
addStylesToDom(styles, options);
|
|
|
|
return function update (newList) {
|
|
var mayRemove = [];
|
|
|
|
for (var i = 0; i < styles.length; i++) {
|
|
var item = styles[i];
|
|
var domStyle = stylesInDom[item.id];
|
|
|
|
domStyle.refs--;
|
|
mayRemove.push(domStyle);
|
|
}
|
|
|
|
if(newList) {
|
|
var newStyles = listToStyles(newList, options);
|
|
addStylesToDom(newStyles, options);
|
|
}
|
|
|
|
for (var i = 0; i < mayRemove.length; i++) {
|
|
var domStyle = mayRemove[i];
|
|
|
|
if(domStyle.refs === 0) {
|
|
for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();
|
|
|
|
delete stylesInDom[domStyle.id];
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
function addStylesToDom (styles, options) {
|
|
for (var i = 0; i < styles.length; i++) {
|
|
var item = styles[i];
|
|
var domStyle = stylesInDom[item.id];
|
|
|
|
if(domStyle) {
|
|
domStyle.refs++;
|
|
|
|
for(var j = 0; j < domStyle.parts.length; j++) {
|
|
domStyle.parts[j](item.parts[j]);
|
|
}
|
|
|
|
for(; j < item.parts.length; j++) {
|
|
domStyle.parts.push(addStyle(item.parts[j], options));
|
|
}
|
|
} else {
|
|
var parts = [];
|
|
|
|
for(var j = 0; j < item.parts.length; j++) {
|
|
parts.push(addStyle(item.parts[j], options));
|
|
}
|
|
|
|
stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
|
|
}
|
|
}
|
|
}
|
|
|
|
function listToStyles (list, options) {
|
|
var styles = [];
|
|
var newStyles = {};
|
|
|
|
for (var i = 0; i < list.length; i++) {
|
|
var item = list[i];
|
|
var id = options.base ? item[0] + options.base : item[0];
|
|
var css = item[1];
|
|
var media = item[2];
|
|
var sourceMap = item[3];
|
|
var part = {css: css, media: media, sourceMap: sourceMap};
|
|
|
|
if(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});
|
|
else newStyles[id].parts.push(part);
|
|
}
|
|
|
|
return styles;
|
|
}
|
|
|
|
function insertStyleElement (options, style) {
|
|
var target = getElement(options.insertInto)
|
|
|
|
if (!target) {
|
|
throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");
|
|
}
|
|
|
|
var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];
|
|
|
|
if (options.insertAt === "top") {
|
|
if (!lastStyleElementInsertedAtTop) {
|
|
target.insertBefore(style, target.firstChild);
|
|
} else if (lastStyleElementInsertedAtTop.nextSibling) {
|
|
target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);
|
|
} else {
|
|
target.appendChild(style);
|
|
}
|
|
stylesInsertedAtTop.push(style);
|
|
} else if (options.insertAt === "bottom") {
|
|
target.appendChild(style);
|
|
} else if (typeof options.insertAt === "object" && options.insertAt.before) {
|
|
var nextSibling = getElement(options.insertInto + " " + options.insertAt.before);
|
|
target.insertBefore(style, nextSibling);
|
|
} else {
|
|
throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");
|
|
}
|
|
}
|
|
|
|
function removeStyleElement (style) {
|
|
if (style.parentNode === null) return false;
|
|
style.parentNode.removeChild(style);
|
|
|
|
var idx = stylesInsertedAtTop.indexOf(style);
|
|
if(idx >= 0) {
|
|
stylesInsertedAtTop.splice(idx, 1);
|
|
}
|
|
}
|
|
|
|
function createStyleElement (options) {
|
|
var style = document.createElement("style");
|
|
|
|
options.attrs.type = "text/css";
|
|
|
|
addAttrs(style, options.attrs);
|
|
insertStyleElement(options, style);
|
|
|
|
return style;
|
|
}
|
|
|
|
function createLinkElement (options) {
|
|
var link = document.createElement("link");
|
|
|
|
options.attrs.type = "text/css";
|
|
options.attrs.rel = "stylesheet";
|
|
|
|
addAttrs(link, options.attrs);
|
|
insertStyleElement(options, link);
|
|
|
|
return link;
|
|
}
|
|
|
|
function addAttrs (el, attrs) {
|
|
Object.keys(attrs).forEach(function (key) {
|
|
el.setAttribute(key, attrs[key]);
|
|
});
|
|
}
|
|
|
|
function addStyle (obj, options) {
|
|
var style, update, remove, result;
|
|
|
|
// If a transform function was defined, run it on the css
|
|
if (options.transform && obj.css) {
|
|
result = options.transform(obj.css);
|
|
|
|
if (result) {
|
|
// If transform returns a value, use that instead of the original css.
|
|
// This allows running runtime transformations on the css.
|
|
obj.css = result;
|
|
} else {
|
|
// If the transform function returns a falsy value, don't add this css.
|
|
// This allows conditional loading of css
|
|
return function() {
|
|
// noop
|
|
};
|
|
}
|
|
}
|
|
|
|
if (options.singleton) {
|
|
var styleIndex = singletonCounter++;
|
|
|
|
style = singleton || (singleton = createStyleElement(options));
|
|
|
|
update = applyToSingletonTag.bind(null, style, styleIndex, false);
|
|
remove = applyToSingletonTag.bind(null, style, styleIndex, true);
|
|
|
|
} else if (
|
|
obj.sourceMap &&
|
|
typeof URL === "function" &&
|
|
typeof URL.createObjectURL === "function" &&
|
|
typeof URL.revokeObjectURL === "function" &&
|
|
typeof Blob === "function" &&
|
|
typeof btoa === "function"
|
|
) {
|
|
style = createLinkElement(options);
|
|
update = updateLink.bind(null, style, options);
|
|
remove = function () {
|
|
removeStyleElement(style);
|
|
|
|
if(style.href) URL.revokeObjectURL(style.href);
|
|
};
|
|
} else {
|
|
style = createStyleElement(options);
|
|
update = applyToTag.bind(null, style);
|
|
remove = function () {
|
|
removeStyleElement(style);
|
|
};
|
|
}
|
|
|
|
update(obj);
|
|
|
|
return function updateStyle (newObj) {
|
|
if (newObj) {
|
|
if (
|
|
newObj.css === obj.css &&
|
|
newObj.media === obj.media &&
|
|
newObj.sourceMap === obj.sourceMap
|
|
) {
|
|
return;
|
|
}
|
|
|
|
update(obj = newObj);
|
|
} else {
|
|
remove();
|
|
}
|
|
};
|
|
}
|
|
|
|
var replaceText = (function () {
|
|
var textStore = [];
|
|
|
|
return function (index, replacement) {
|
|
textStore[index] = replacement;
|
|
|
|
return textStore.filter(Boolean).join('\n');
|
|
};
|
|
})();
|
|
|
|
function applyToSingletonTag (style, index, remove, obj) {
|
|
var css = remove ? "" : obj.css;
|
|
|
|
if (style.styleSheet) {
|
|
style.styleSheet.cssText = replaceText(index, css);
|
|
} else {
|
|
var cssNode = document.createTextNode(css);
|
|
var childNodes = style.childNodes;
|
|
|
|
if (childNodes[index]) style.removeChild(childNodes[index]);
|
|
|
|
if (childNodes.length) {
|
|
style.insertBefore(cssNode, childNodes[index]);
|
|
} else {
|
|
style.appendChild(cssNode);
|
|
}
|
|
}
|
|
}
|
|
|
|
function applyToTag (style, obj) {
|
|
var css = obj.css;
|
|
var media = obj.media;
|
|
|
|
if(media) {
|
|
style.setAttribute("media", media)
|
|
}
|
|
|
|
if(style.styleSheet) {
|
|
style.styleSheet.cssText = css;
|
|
} else {
|
|
while(style.firstChild) {
|
|
style.removeChild(style.firstChild);
|
|
}
|
|
|
|
style.appendChild(document.createTextNode(css));
|
|
}
|
|
}
|
|
|
|
function updateLink (link, options, obj) {
|
|
var css = obj.css;
|
|
var sourceMap = obj.sourceMap;
|
|
|
|
/*
|
|
If convertToAbsoluteUrls isn't defined, but sourcemaps are enabled
|
|
and there is no publicPath defined then lets turn convertToAbsoluteUrls
|
|
on by default. Otherwise default to the convertToAbsoluteUrls option
|
|
directly
|
|
*/
|
|
var autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;
|
|
|
|
if (options.convertToAbsoluteUrls || autoFixUrls) {
|
|
css = fixUrls(css);
|
|
}
|
|
|
|
if (sourceMap) {
|
|
// http://stackoverflow.com/a/26603875
|
|
css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
|
|
}
|
|
|
|
var blob = new Blob([css], { type: "text/css" });
|
|
|
|
var oldSrc = link.href;
|
|
|
|
link.href = URL.createObjectURL(blob);
|
|
|
|
if(oldSrc) URL.revokeObjectURL(oldSrc);
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
/* 8 */
|
|
/***/ (function(module, exports) {
|
|
|
|
|
|
/**
|
|
* When source maps are enabled, `style-loader` uses a link element with a data-uri to
|
|
* embed the css on the page. This breaks all relative urls because now they are relative to a
|
|
* bundle instead of the current page.
|
|
*
|
|
* One solution is to only use full urls, but that may be impossible.
|
|
*
|
|
* Instead, this function "fixes" the relative urls to be absolute according to the current page location.
|
|
*
|
|
* A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.
|
|
*
|
|
*/
|
|
|
|
module.exports = function (css) {
|
|
// get current location
|
|
var location = typeof window !== "undefined" && window.location;
|
|
|
|
if (!location) {
|
|
throw new Error("fixUrls requires window.location");
|
|
}
|
|
|
|
// blank or null?
|
|
if (!css || typeof css !== "string") {
|
|
return css;
|
|
}
|
|
|
|
var baseUrl = location.protocol + "//" + location.host;
|
|
var currentDir = baseUrl + location.pathname.replace(/\/[^\/]*$/, "/");
|
|
|
|
// convert each url(...)
|
|
/*
|
|
This regular expression is just a way to recursively match brackets within
|
|
a string.
|
|
|
|
/url\s*\( = Match on the word "url" with any whitespace after it and then a parens
|
|
( = Start a capturing group
|
|
(?: = Start a non-capturing group
|
|
[^)(] = Match anything that isn't a parentheses
|
|
| = OR
|
|
\( = Match a start parentheses
|
|
(?: = Start another non-capturing groups
|
|
[^)(]+ = Match anything that isn't a parentheses
|
|
| = OR
|
|
\( = Match a start parentheses
|
|
[^)(]* = Match anything that isn't a parentheses
|
|
\) = Match a end parentheses
|
|
) = End Group
|
|
*\) = Match anything and then a close parens
|
|
) = Close non-capturing group
|
|
* = Match anything
|
|
) = Close capturing group
|
|
\) = Match a close parens
|
|
|
|
/gi = Get all matches, not the first. Be case insensitive.
|
|
*/
|
|
var fixedCss = css.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function(fullMatch, origUrl) {
|
|
// strip quotes (if they exist)
|
|
var unquotedOrigUrl = origUrl
|
|
.trim()
|
|
.replace(/^"(.*)"$/, function(o, $1){ return $1; })
|
|
.replace(/^'(.*)'$/, function(o, $1){ return $1; });
|
|
|
|
// already a full url? no change
|
|
if (/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(unquotedOrigUrl)) {
|
|
return fullMatch;
|
|
}
|
|
|
|
// convert the url to a full url
|
|
var newUrl;
|
|
|
|
if (unquotedOrigUrl.indexOf("//") === 0) {
|
|
//TODO: should we add protocol?
|
|
newUrl = unquotedOrigUrl;
|
|
} else if (unquotedOrigUrl.indexOf("/") === 0) {
|
|
// path should be relative to the base url
|
|
newUrl = baseUrl + unquotedOrigUrl; // already starts with '/'
|
|
} else {
|
|
// path should be relative to current directory
|
|
newUrl = currentDir + unquotedOrigUrl.replace(/^\.\//, ""); // Strip leading './'
|
|
}
|
|
|
|
// send back the fixed url(...)
|
|
return "url(" + JSON.stringify(newUrl) + ")";
|
|
});
|
|
|
|
// send back the fixed css
|
|
return fixedCss;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
/* 9 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const common = __webpack_require__(10);
|
|
const RESTClient = __webpack_require__(17);
|
|
const frappe = __webpack_require__(0);
|
|
frappe.ui = __webpack_require__(19);
|
|
const Desk = __webpack_require__(21);
|
|
|
|
module.exports = {
|
|
async start({server}) {
|
|
window.frappe = frappe;
|
|
frappe.init();
|
|
common.init_libs(frappe);
|
|
|
|
frappe.fetch = window.fetch.bind();
|
|
frappe.db = await new RESTClient({server: server});
|
|
|
|
frappe.flags.cache_docs = true;
|
|
|
|
frappe.desk = new Desk();
|
|
await frappe.login();
|
|
}
|
|
};
|
|
|
|
|
|
|
|
/***/ }),
|
|
/* 10 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const utils = __webpack_require__(11);
|
|
const models = __webpack_require__(12);
|
|
const model = __webpack_require__(13);
|
|
const _document = __webpack_require__(3);
|
|
const meta = __webpack_require__(14);
|
|
const _session = __webpack_require__(15);
|
|
const errors = __webpack_require__(16);
|
|
|
|
|
|
module.exports = {
|
|
init_libs(frappe) {
|
|
Object.assign(frappe, utils);
|
|
frappe.model = model;
|
|
frappe.models = new models.Models();
|
|
frappe.document = _document;
|
|
frappe.meta = meta;
|
|
frappe._session = _session;
|
|
frappe.errors = errors;
|
|
}
|
|
}
|
|
|
|
/***/ }),
|
|
/* 11 */
|
|
/***/ (function(module, exports) {
|
|
|
|
module.exports = {
|
|
slug(text) {
|
|
return text.toLowerCase().replace(/ /g, '_');
|
|
},
|
|
|
|
async_handler(fn) {
|
|
return (req, res, next) => Promise.resolve(fn(req, res, next))
|
|
.catch((err) => {
|
|
// handle error
|
|
res.status(err.status_code).send({ error: err.message });
|
|
});
|
|
},
|
|
|
|
async sleep(seconds) {
|
|
return new Promise(resolve => {
|
|
setTimeout(resolve, seconds * 1000);
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
/* 12 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const process = __webpack_require__(2);
|
|
const frappe = __webpack_require__(0);
|
|
|
|
class Models {
|
|
constructor() {
|
|
this.data = {doctype: {}};
|
|
this.controllers = {};
|
|
this.meta_classes = {};
|
|
}
|
|
|
|
get(doctype, name) {
|
|
return this.data[frappe.slug(doctype)][frappe.slug(name)];
|
|
}
|
|
|
|
get_controller(doctype) {
|
|
return this.controllers[frappe.slug(doctype)];
|
|
}
|
|
|
|
get_meta_class(doctype) {
|
|
return this.meta_classes[frappe.slug(doctype)] || frappe.meta.Meta;
|
|
}
|
|
|
|
}
|
|
|
|
module.exports = { Models: Models }
|
|
|
|
/***/ }),
|
|
/* 13 */
|
|
/***/ (function(module, exports) {
|
|
|
|
module.exports = {
|
|
standard_fields: [
|
|
{
|
|
fieldname: 'name', fieldtype: 'Data', reqd: 1
|
|
},
|
|
{
|
|
fieldname: 'owner', fieldtype: 'Link', reqd: 1, options: 'User'
|
|
},
|
|
{
|
|
fieldname: 'modified_by', fieldtype: 'Link', reqd: 1, options: 'User'
|
|
},
|
|
{
|
|
fieldname: 'creation', fieldtype: 'Datetime', reqd: 1
|
|
},
|
|
{
|
|
fieldname: 'modified', fieldtype: 'Datetime', reqd: 1
|
|
},
|
|
{
|
|
fieldname: 'keywords', fieldtype: 'Text'
|
|
},
|
|
{
|
|
fieldname: 'docstatus', fieldtype: 'Int', reqd: 1, default: 0
|
|
}
|
|
],
|
|
child_fields: [
|
|
{
|
|
fieldname: 'idx', fieldtype: 'Int', reqd: 1
|
|
},
|
|
{
|
|
fieldname: 'parent', fieldtype: 'Data', reqd: 1
|
|
},
|
|
{
|
|
fieldname: 'parenttype', fieldtype: 'Link', reqd: 1, options: 'DocType'
|
|
},
|
|
{
|
|
fieldname: 'parentfield', fieldtype: 'Data', reqd: 1
|
|
}
|
|
]
|
|
};
|
|
|
|
/***/ }),
|
|
/* 14 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const Document = __webpack_require__(3).Document;
|
|
const frappe = __webpack_require__(0);
|
|
|
|
class Meta extends Document {
|
|
constructor(data) {
|
|
super(data);
|
|
this.event_handlers = {};
|
|
this.list_options = {
|
|
fields: ['name', 'modified']
|
|
};
|
|
if (this.setup_meta) {
|
|
this.setup_meta();
|
|
}
|
|
}
|
|
|
|
get_field(fieldname) {
|
|
if (!this.field_map) {
|
|
this.field_map = {};
|
|
for (let df of this.fields) {
|
|
this.field_map[df.fieldname] = df;
|
|
}
|
|
}
|
|
return this.field_map[fieldname];
|
|
}
|
|
|
|
on(key, fn) {
|
|
if (!this.event_handlers[key]) {
|
|
this.event_handlers[key] = [];
|
|
}
|
|
this.event_handlers[key].push(fn);
|
|
}
|
|
|
|
async set(fieldname, value) {
|
|
this[fieldname] = value;
|
|
await this.trigger(fieldname);
|
|
}
|
|
|
|
get(fieldname) {
|
|
return this[fieldname];
|
|
}
|
|
|
|
get_valid_fields() {
|
|
if (!this._valid_fields) {
|
|
this._valid_fields = [];
|
|
|
|
// standard fields
|
|
for (let df of frappe.model.standard_fields) {
|
|
this._valid_fields.push(df);
|
|
}
|
|
|
|
// parent fields
|
|
if (this.istable) {
|
|
for (let df of frappe.model.child_fields) {
|
|
this._valid_fields.push(df);
|
|
}
|
|
}
|
|
|
|
// doctype fields
|
|
for (let df of this.fields) {
|
|
if (frappe.db.type_map[df.fieldtype]) {
|
|
this._valid_fields.push(df);
|
|
}
|
|
}
|
|
}
|
|
|
|
return this._valid_fields;
|
|
}
|
|
|
|
get_keyword_fields() {
|
|
return this.keyword_fields || this.meta.fields.filter(df => df.reqd).map(df => df.fieldname);
|
|
}
|
|
|
|
validate_select(df, value) {
|
|
let options = df.options;
|
|
if (typeof options === 'string') {
|
|
// values given as string
|
|
options = df.options.split('\n');
|
|
}
|
|
if (!options.includes(value)) {
|
|
throw new frappe.errors.ValueError(`${value} must be one of ${options.join(", ")}`);
|
|
}
|
|
}
|
|
|
|
async trigger(key, event = {}) {
|
|
|
|
Object.assign(event, {
|
|
doc: this,
|
|
name: key
|
|
});
|
|
|
|
if (this.event_handlers[key]) {
|
|
for (var handler of this.event_handlers[key]) {
|
|
await handler(event);
|
|
}
|
|
}
|
|
}
|
|
|
|
// collections
|
|
async get_list({start, limit=20, filters}) {
|
|
return await frappe.db.get_all({
|
|
doctype: this.name,
|
|
fields: this.list_options.fields,
|
|
filters: filters,
|
|
start: start,
|
|
limit: limit
|
|
});
|
|
}
|
|
|
|
get_row_html(data) {
|
|
return `<a href="/view/${this.name}/${data.name}">${data.name}</a>`;
|
|
}
|
|
|
|
}
|
|
|
|
module.exports = { Meta: Meta }
|
|
|
|
/***/ }),
|
|
/* 15 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
|
|
class Session {
|
|
constructor(user, user_key) {
|
|
this.user = user || 'guest';
|
|
if (this.user !== 'guest') {
|
|
this.login(user_key);
|
|
}
|
|
}
|
|
|
|
login(user_key) {
|
|
// could be password, sessionid, otp
|
|
}
|
|
|
|
}
|
|
|
|
module.exports = { Session: Session };
|
|
|
|
/***/ }),
|
|
/* 16 */
|
|
/***/ (function(module, exports) {
|
|
|
|
class BaseError extends Error {
|
|
constructor(status_code, ...params) {
|
|
super(...params);
|
|
this.status_code = status_code;
|
|
}
|
|
}
|
|
|
|
class ValidationError extends BaseError {
|
|
constructor(...params) { super(417, ...params); }
|
|
}
|
|
|
|
module.exports = {
|
|
ValidationError: ValidationError,
|
|
ValueError: class ValueError extends ValidationError { },
|
|
NotFound: class NotFound extends BaseError {
|
|
constructor(...params) { super(404, ...params); }
|
|
},
|
|
Forbidden: class Forbidden extends BaseError {
|
|
constructor(...params) { super(403, ...params); }
|
|
},
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
/* 17 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
const path = __webpack_require__(18);
|
|
|
|
module.exports = class RESTClient {
|
|
constructor({server, protocol='http'}) {
|
|
this.server = server;
|
|
this.protocol = protocol;
|
|
|
|
this.init_type_map();
|
|
|
|
this.json_headers = {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json'
|
|
}
|
|
}
|
|
|
|
connect() {
|
|
|
|
}
|
|
|
|
async insert(doctype, doc) {
|
|
doc.doctype = doctype;
|
|
let url = this.protocol + '://' + path.join(this.server, `/api/resource/${frappe.slug(doctype)}`);
|
|
let response = await frappe.fetch(url, {
|
|
method: 'POST',
|
|
headers: this.json_headers,
|
|
body: JSON.stringify(doc)
|
|
});
|
|
|
|
return await response.json();
|
|
}
|
|
|
|
async get(doctype, name) {
|
|
let url = this.protocol + '://' + path.join(this.server, `/api/resource/${frappe.slug(doctype)}/${name}`);
|
|
let response = await frappe.fetch(url, {
|
|
method: 'GET',
|
|
headers: this.json_headers
|
|
});
|
|
return await response.json();
|
|
}
|
|
|
|
async get_all({doctype, fields, filters, start, limit, sort_by, order}) {
|
|
let url = this.protocol + '://' + path.join(this.server, `/api/resource/${frappe.slug(doctype)}`);
|
|
|
|
url = url + "?" + this.get_query_string({
|
|
fields: JSON.stringify(fields),
|
|
filters: JSON.stringify(filters),
|
|
start: start,
|
|
limit: limit,
|
|
sort_by: sort_by,
|
|
order: order
|
|
});
|
|
|
|
let response = await frappe.fetch(url, {
|
|
method: 'GET',
|
|
headers: this.json_headers
|
|
});
|
|
return await response.json();
|
|
|
|
}
|
|
|
|
async update(doctype, doc) {
|
|
doc.doctype = doctype;
|
|
let url = this.protocol + '://' + path.join(this.server, `/api/resource/${frappe.slug(doctype)}/${doc.name}`);
|
|
let response = await frappe.fetch(url, {
|
|
method: 'PUT',
|
|
headers: this.json_headers,
|
|
body: JSON.stringify(doc)
|
|
});
|
|
|
|
return await response.json();
|
|
}
|
|
|
|
async delete(doctype, name) {
|
|
let url = this.protocol + '://' + path.join(this.server, `/api/resource/${frappe.slug(doctype)}/${name}`);
|
|
|
|
let response = await frappe.fetch(url, {
|
|
method: 'DELETE',
|
|
headers: this.json_headers
|
|
});
|
|
|
|
return await response.json();
|
|
}
|
|
|
|
get_query_string(params) {
|
|
return Object.keys(params)
|
|
.map(k => params[k] != null ? encodeURIComponent(k) + '=' + encodeURIComponent(params[k]) : null)
|
|
.filter(v => v)
|
|
.join('&');
|
|
}
|
|
|
|
init_type_map() {
|
|
this.type_map = {
|
|
'Currency': true
|
|
,'Int': true
|
|
,'Float': true
|
|
,'Percent': true
|
|
,'Check': true
|
|
,'Small Text': true
|
|
,'Long Text': true
|
|
,'Code': true
|
|
,'Text Editor': true
|
|
,'Date': true
|
|
,'Datetime': true
|
|
,'Time': true
|
|
,'Text': true
|
|
,'Data': true
|
|
,'Link': true
|
|
,'Dynamic Link':true
|
|
,'Password': true
|
|
,'Select': true
|
|
,'Read Only': true
|
|
,'Attach': true
|
|
,'Attach Image':true
|
|
,'Signature': true
|
|
,'Color': true
|
|
,'Barcode': true
|
|
,'Geolocation': true
|
|
}
|
|
}
|
|
|
|
close() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/***/ }),
|
|
/* 18 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
// copy of this software and associated documentation files (the
|
|
// "Software"), to deal in the Software without restriction, including
|
|
// without limitation the rights to use, copy, modify, merge, publish,
|
|
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
// persons to whom the Software is furnished to do so, subject to the
|
|
// following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included
|
|
// in all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
|
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
// resolves . and .. elements in a path array with directory names there
|
|
// must be no slashes, empty elements, or device names (c:\) in the array
|
|
// (so also no leading and trailing slashes - it does not distinguish
|
|
// relative and absolute paths)
|
|
function normalizeArray(parts, allowAboveRoot) {
|
|
// if the path tries to go above the root, `up` ends up > 0
|
|
var up = 0;
|
|
for (var i = parts.length - 1; i >= 0; i--) {
|
|
var last = parts[i];
|
|
if (last === '.') {
|
|
parts.splice(i, 1);
|
|
} else if (last === '..') {
|
|
parts.splice(i, 1);
|
|
up++;
|
|
} else if (up) {
|
|
parts.splice(i, 1);
|
|
up--;
|
|
}
|
|
}
|
|
|
|
// if the path is allowed to go above the root, restore leading ..s
|
|
if (allowAboveRoot) {
|
|
for (; up--; up) {
|
|
parts.unshift('..');
|
|
}
|
|
}
|
|
|
|
return parts;
|
|
}
|
|
|
|
// Split a filename into [root, dir, basename, ext], unix version
|
|
// 'root' is just a slash, or nothing.
|
|
var splitPathRe =
|
|
/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
|
|
var splitPath = function(filename) {
|
|
return splitPathRe.exec(filename).slice(1);
|
|
};
|
|
|
|
// path.resolve([from ...], to)
|
|
// posix version
|
|
exports.resolve = function() {
|
|
var resolvedPath = '',
|
|
resolvedAbsolute = false;
|
|
|
|
for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
|
|
var path = (i >= 0) ? arguments[i] : process.cwd();
|
|
|
|
// Skip empty and invalid entries
|
|
if (typeof path !== 'string') {
|
|
throw new TypeError('Arguments to path.resolve must be strings');
|
|
} else if (!path) {
|
|
continue;
|
|
}
|
|
|
|
resolvedPath = path + '/' + resolvedPath;
|
|
resolvedAbsolute = path.charAt(0) === '/';
|
|
}
|
|
|
|
// At this point the path should be resolved to a full absolute path, but
|
|
// handle relative paths to be safe (might happen when process.cwd() fails)
|
|
|
|
// Normalize the path
|
|
resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
|
|
return !!p;
|
|
}), !resolvedAbsolute).join('/');
|
|
|
|
return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
|
|
};
|
|
|
|
// path.normalize(path)
|
|
// posix version
|
|
exports.normalize = function(path) {
|
|
var isAbsolute = exports.isAbsolute(path),
|
|
trailingSlash = substr(path, -1) === '/';
|
|
|
|
// Normalize the path
|
|
path = normalizeArray(filter(path.split('/'), function(p) {
|
|
return !!p;
|
|
}), !isAbsolute).join('/');
|
|
|
|
if (!path && !isAbsolute) {
|
|
path = '.';
|
|
}
|
|
if (path && trailingSlash) {
|
|
path += '/';
|
|
}
|
|
|
|
return (isAbsolute ? '/' : '') + path;
|
|
};
|
|
|
|
// posix version
|
|
exports.isAbsolute = function(path) {
|
|
return path.charAt(0) === '/';
|
|
};
|
|
|
|
// posix version
|
|
exports.join = function() {
|
|
var paths = Array.prototype.slice.call(arguments, 0);
|
|
return exports.normalize(filter(paths, function(p, index) {
|
|
if (typeof p !== 'string') {
|
|
throw new TypeError('Arguments to path.join must be strings');
|
|
}
|
|
return p;
|
|
}).join('/'));
|
|
};
|
|
|
|
|
|
// path.relative(from, to)
|
|
// posix version
|
|
exports.relative = function(from, to) {
|
|
from = exports.resolve(from).substr(1);
|
|
to = exports.resolve(to).substr(1);
|
|
|
|
function trim(arr) {
|
|
var start = 0;
|
|
for (; start < arr.length; start++) {
|
|
if (arr[start] !== '') break;
|
|
}
|
|
|
|
var end = arr.length - 1;
|
|
for (; end >= 0; end--) {
|
|
if (arr[end] !== '') break;
|
|
}
|
|
|
|
if (start > end) return [];
|
|
return arr.slice(start, end - start + 1);
|
|
}
|
|
|
|
var fromParts = trim(from.split('/'));
|
|
var toParts = trim(to.split('/'));
|
|
|
|
var length = Math.min(fromParts.length, toParts.length);
|
|
var samePartsLength = length;
|
|
for (var i = 0; i < length; i++) {
|
|
if (fromParts[i] !== toParts[i]) {
|
|
samePartsLength = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
var outputParts = [];
|
|
for (var i = samePartsLength; i < fromParts.length; i++) {
|
|
outputParts.push('..');
|
|
}
|
|
|
|
outputParts = outputParts.concat(toParts.slice(samePartsLength));
|
|
|
|
return outputParts.join('/');
|
|
};
|
|
|
|
exports.sep = '/';
|
|
exports.delimiter = ':';
|
|
|
|
exports.dirname = function(path) {
|
|
var result = splitPath(path),
|
|
root = result[0],
|
|
dir = result[1];
|
|
|
|
if (!root && !dir) {
|
|
// No dirname whatsoever
|
|
return '.';
|
|
}
|
|
|
|
if (dir) {
|
|
// It has a dirname, strip trailing slash
|
|
dir = dir.substr(0, dir.length - 1);
|
|
}
|
|
|
|
return root + dir;
|
|
};
|
|
|
|
|
|
exports.basename = function(path, ext) {
|
|
var f = splitPath(path)[2];
|
|
// TODO: make this comparison case-insensitive on windows?
|
|
if (ext && f.substr(-1 * ext.length) === ext) {
|
|
f = f.substr(0, f.length - ext.length);
|
|
}
|
|
return f;
|
|
};
|
|
|
|
|
|
exports.extname = function(path) {
|
|
return splitPath(path)[3];
|
|
};
|
|
|
|
function filter (xs, f) {
|
|
if (xs.filter) return xs.filter(f);
|
|
var res = [];
|
|
for (var i = 0; i < xs.length; i++) {
|
|
if (f(xs[i], i, xs)) res.push(xs[i]);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
// String.prototype.substr - negative index don't work in IE8
|
|
var substr = 'ab'.substr(-1) === 'b'
|
|
? function (str, start, len) { return str.substr(start, len) }
|
|
: function (str, start, len) {
|
|
if (start < 0) start = str.length + start;
|
|
return str.substr(start, len);
|
|
}
|
|
;
|
|
|
|
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
|
|
|
|
/***/ }),
|
|
/* 19 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
const Dropdown = __webpack_require__(20);
|
|
|
|
module.exports = {
|
|
add(tag, className, parent) {
|
|
let element = document.createElement(tag);
|
|
if (className) {
|
|
for (let c of className.split(' ')) {
|
|
this.add_class(element, c);
|
|
}
|
|
}
|
|
if (parent) {
|
|
parent.appendChild(element);
|
|
}
|
|
return element;
|
|
},
|
|
|
|
remove(element) {
|
|
element.parentNode.removeChild(element);
|
|
},
|
|
|
|
add_class(element, className) {
|
|
if (element.classList) {
|
|
element.classList.add(className);
|
|
} else {
|
|
element.className += " " + className;
|
|
}
|
|
},
|
|
|
|
remove_class(element, className) {
|
|
if (element.classList) {
|
|
element.classList.remove(className);
|
|
} else {
|
|
element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
|
|
}
|
|
},
|
|
|
|
toggle(element, default_display = '') {
|
|
element.style.display = element.style.display === 'none' ? default_display : 'none';
|
|
},
|
|
|
|
make_dropdown(label, parent, btn_class = 'btn-secondary') {
|
|
return new Dropdown({parent: parent, label:label, btn_class:btn_class});
|
|
}
|
|
|
|
}
|
|
|
|
/***/ }),
|
|
/* 20 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
|
|
class Dropdown {
|
|
constructor({parent, label, btn_class = 'btn-secondary', items = []}) {
|
|
Object.assign(this, arguments[0]);
|
|
|
|
this.dropdown_items = [];
|
|
this.setup_background_click();
|
|
this.make();
|
|
|
|
// init items
|
|
if (this.items) {
|
|
for (item of this.items) {
|
|
this.add_item(item.label, item.action);
|
|
}
|
|
}
|
|
}
|
|
|
|
setup_background_click() {
|
|
if (!document.dropdown_setup) {
|
|
frappe.dropdowns = [];
|
|
// setup hiding all dropdowns on click
|
|
document.addEventListener('click', (event) => {
|
|
for (let d of frappe.dropdowns) {
|
|
if (d.button !== event.target) {
|
|
d.collapse();
|
|
}
|
|
}
|
|
});
|
|
document.dropdown_setup = true;
|
|
}
|
|
frappe.dropdowns.push(this);
|
|
}
|
|
|
|
make() {
|
|
this.dropdown = frappe.ui.add('div', 'dropdown', this.parent);
|
|
this.make_button();
|
|
this.dropdown_menu = frappe.ui.add('div', 'dropdown-menu', this.dropdown);
|
|
}
|
|
|
|
make_button() {
|
|
this.button = frappe.ui.add('button', 'btn ' + this.btn_class,
|
|
this.dropdown);
|
|
frappe.ui.add_class(this.button, 'dropdown-toggle');
|
|
this.button.textContent = this.label;
|
|
this.button.addEventListener('click', () => {
|
|
this.toggle();
|
|
});
|
|
}
|
|
|
|
expand() {
|
|
this.dropdown.classList.add('show');
|
|
this.dropdown_menu.classList.add('show');
|
|
}
|
|
|
|
collapse() {
|
|
this.dropdown.classList.remove('show');
|
|
this.dropdown_menu.classList.remove('show');
|
|
}
|
|
|
|
toggle() {
|
|
this.dropdown.classList.toggle('show');
|
|
this.dropdown_menu.classList.toggle('show');
|
|
}
|
|
|
|
add_item(label, action) {
|
|
let item = frappe.ui.add('button', 'dropdown-item', this.dropdown_menu);
|
|
item.textContent = label;
|
|
item.setAttribute('type', 'button');
|
|
if (typeof action === 'string') {
|
|
item.src = action;
|
|
item.addEventListener('click', async () => {
|
|
await frappe.router.set_route(action);
|
|
this.toggle();
|
|
});
|
|
} else {
|
|
item.addEventListener('click', async () => {
|
|
await action();
|
|
this.toggle();
|
|
});
|
|
}
|
|
this.dropdown_items.push(item);
|
|
}
|
|
|
|
float_right() {
|
|
frappe.ui.add_class(this.dropdown, 'float-right');
|
|
frappe.ui.add_class(this.dropdown_menu, 'dropdown-menu-right');
|
|
}
|
|
}
|
|
|
|
module.exports = Dropdown;
|
|
|
|
/***/ }),
|
|
/* 21 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
const Search = __webpack_require__(22);
|
|
const Router = __webpack_require__(23);
|
|
const Page = __webpack_require__(24);
|
|
const List = __webpack_require__(25);
|
|
const Form = __webpack_require__(26);
|
|
|
|
module.exports = class Desk {
|
|
constructor() {
|
|
frappe.router = new Router();
|
|
frappe.router.listen();
|
|
|
|
this.wrapper = frappe.ui.add('div', 'desk', document.querySelector('body'));
|
|
|
|
this.nav = frappe.ui.add('header', 'nav text-center', this.wrapper);
|
|
|
|
this.body = frappe.ui.add('div', 'desk-body two-column', this.wrapper);
|
|
this.sidebar = frappe.ui.add('div', 'sidebar', this.body);
|
|
this.main = frappe.ui.add('div', 'main', this.body);
|
|
|
|
this.sidebar_items = [];
|
|
this.pages = {
|
|
lists: {},
|
|
forms: {}
|
|
};
|
|
|
|
this.init_routes();
|
|
|
|
// this.search = new Search(this.nav);
|
|
}
|
|
|
|
init_routes() {
|
|
frappe.router.add('list/:doctype', async (params) => {
|
|
let page = this.get_list_page(params.doctype);
|
|
await page.show(params);
|
|
});
|
|
|
|
frappe.router.add('edit/:doctype/:name', async (params) => {
|
|
let page = this.get_form_page(params.doctype);
|
|
await page.show(params);
|
|
})
|
|
|
|
frappe.router.add('new/:doctype', async (params) => {
|
|
let doc = await frappe.get_new_doc(params.doctype);
|
|
frappe.router.set_route('edit', doc.doctype, doc.name);
|
|
});
|
|
|
|
}
|
|
|
|
get_list_page(doctype) {
|
|
if (!this.pages.lists[doctype]) {
|
|
let page = new Page('List ' + doctype);
|
|
page.list = new List({
|
|
doctype: doctype,
|
|
parent: page.body
|
|
});
|
|
page.on('show', async () => {
|
|
await page.list.run();
|
|
});
|
|
this.pages.lists[doctype] = page;
|
|
}
|
|
return this.pages.lists[doctype];
|
|
}
|
|
|
|
get_form_page(doctype) {
|
|
if (!this.pages.forms[doctype]) {
|
|
let page = new Page('Edit ' + doctype);
|
|
page.form = new Form({
|
|
doctype: doctype,
|
|
parent: page.body
|
|
});
|
|
page.on('show', async (params) => {
|
|
try {
|
|
page.doc = await frappe.get_doc(params.doctype, params.name);
|
|
page.form.use(page.doc);
|
|
} catch (e) {
|
|
page.render_error(e.status_code, e.message);
|
|
}
|
|
});
|
|
this.pages.forms[doctype] = page;
|
|
}
|
|
return this.pages.forms[doctype];
|
|
}
|
|
|
|
add_sidebar_item(label, action) {
|
|
let item = frappe.ui.add('a', '', frappe.ui.add('p', null, frappe.desk.sidebar));
|
|
item.textContent = label;
|
|
if (typeof action === 'string') {
|
|
item.href = action;
|
|
} else {
|
|
item.addEventHandler('click', () => {
|
|
action();
|
|
});
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/***/ }),
|
|
/* 22 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
|
|
module.exports = class Search {
|
|
constructor(parent) {
|
|
this.input = frappe.ui.add('input', 'form-control nav-search', parent);
|
|
this.input.addEventListener('keypress', function(event) {
|
|
if (event.keyCode===13) {
|
|
let list = frappe.router.current_page.list;
|
|
if (list) {
|
|
list.search_text = this.value;
|
|
list.run();
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
/***/ }),
|
|
/* 23 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
|
|
module.exports = class Router {
|
|
constructor() {
|
|
this.current_page = null;
|
|
this.static_routes = [];
|
|
this.dynamic_routes = [];
|
|
}
|
|
|
|
add(route, handler) {
|
|
let page = {handler: handler, route: route};
|
|
|
|
// '/todo/:name/:place'.match(/:([^/]+)/g);
|
|
page.param_keys = route.match(/:([^/]+)/g);
|
|
|
|
if (page.param_keys) {
|
|
// make expression
|
|
// '/todo/:name/:place'.replace(/\/:([a-z1-9]+)/g, "\/([a-z0-9]+)");
|
|
page.depth = route.split('/').length;
|
|
page.expression = route.replace(/\/:([a-z1-9]+)/g, "\/([a-z0-9]+)");
|
|
this.dynamic_routes.push(page);
|
|
this.sort_dynamic_routes();
|
|
} else {
|
|
this.static_routes.push(page);
|
|
this.sort_static_routes();
|
|
}
|
|
}
|
|
|
|
sort_dynamic_routes() {
|
|
// routes with more parts first
|
|
this.dynamic_routes = this.dynamic_routes.sort((a, b) => {
|
|
if (a.depth < b.depth) {
|
|
return 1;
|
|
} else if (a.depth > b.depth) {
|
|
return -1;
|
|
} else {
|
|
if (a.param_keys.length !== b.param_keys.length) {
|
|
return a.param_keys.length > b.param_keys.length ? 1 : -1;
|
|
} else {
|
|
return a.route.length > b.route.length ? 1 : -1;
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
sort_static_routes() {
|
|
// longer routes on first
|
|
this.static_routes = this.static_routes.sort((a, b) => {
|
|
return a.route.length > b.route.length ? 1 : -1;
|
|
});
|
|
}
|
|
|
|
listen() {
|
|
window.addEventListener('hashchange', (event) => {
|
|
this.show(window.location.hash);
|
|
});
|
|
}
|
|
|
|
set_route(...parts) {
|
|
const route = parts.join('/');
|
|
window.location.hash = route;
|
|
}
|
|
|
|
async show(route) {
|
|
if (route && route[0]==='#') {
|
|
route = route.substr(1);
|
|
}
|
|
|
|
if (!route) {
|
|
route = this.default;
|
|
}
|
|
let page = this.match(route);
|
|
|
|
if (page) {
|
|
if (typeof page.handler==='function') {
|
|
await page.handler(page.params);
|
|
} else {
|
|
await page.handler.show(page.params);
|
|
}
|
|
}
|
|
}
|
|
|
|
match(route) {
|
|
// match static
|
|
for(let page of this.static_routes) {
|
|
if (page.route === route) {
|
|
return {handler: page.handler};
|
|
}
|
|
}
|
|
|
|
// match dynamic
|
|
for(let page of this.dynamic_routes) {
|
|
let matches = route.match(new RegExp(page.expression));
|
|
|
|
if (matches && matches.length == page.param_keys.length + 1) {
|
|
let params = {}
|
|
for (let i=0; i < page.param_keys.length; i++) {
|
|
params[page.param_keys[i].substr(1)] = matches[i + 1];
|
|
}
|
|
return {handler:page.handler, params: params};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/***/ }),
|
|
/* 24 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
|
|
module.exports = class Page {
|
|
constructor(title) {
|
|
this.handlers = {};
|
|
this.title = title;
|
|
this.make();
|
|
}
|
|
|
|
make() {
|
|
this.wrapper = frappe.ui.add('div', 'page hide', frappe.desk.main);
|
|
this.body = frappe.ui.add('div', 'page-body', this.wrapper);
|
|
}
|
|
|
|
hide() {
|
|
this.wrapper.classList.add('hide');
|
|
this.trigger('hide');
|
|
}
|
|
|
|
async show(params) {
|
|
if (frappe.router.current_page) {
|
|
frappe.router.current_page.hide();
|
|
}
|
|
this.wrapper.classList.remove('hide');
|
|
this.body.classList.remove('hide');
|
|
|
|
if (this.page_error) {
|
|
this.page_error.classList.add('hide');
|
|
}
|
|
|
|
frappe.router.current_page = this;
|
|
document.title = this.title;
|
|
|
|
await this.trigger('show', params);
|
|
}
|
|
|
|
render_error(status_code, message) {
|
|
if (!this.page_error) {
|
|
this.page_error = frappe.ui.add('div', 'page-error', this.wrapper);
|
|
}
|
|
this.body.classList.add('hide');
|
|
this.page_error.classList.remove('hide');
|
|
this.page_error.innerHTML = `<h3 class="text-extra-muted">${status_code}</h3><p class="text-muted">${message}</p>`;
|
|
}
|
|
|
|
on(event, fn) {
|
|
if (!this.handlers[event]) this.handlers[event] = [];
|
|
this.handlers[event].push(fn);
|
|
}
|
|
|
|
async trigger(event, params) {
|
|
if (this.handlers[event]) {
|
|
for (let handler of this.handlers[event]) {
|
|
await handler(params);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/***/ }),
|
|
/* 25 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
|
|
module.exports = class List {
|
|
constructor({doctype, parent, fields}) {
|
|
this.doctype = doctype;
|
|
this.parent = parent;
|
|
this.fields = fields;
|
|
|
|
this.meta = frappe.get_meta(this.doctype);
|
|
|
|
this.start = 0;
|
|
this.page_length = 20;
|
|
|
|
this.body = null;
|
|
this.rows = [];
|
|
this.data = [];
|
|
}
|
|
|
|
async run() {
|
|
this.make_body();
|
|
this.set_filters();
|
|
|
|
let data = await this.meta.get_list({
|
|
filters: this.filters,
|
|
start:this.start,
|
|
limit:this.page_length + 1
|
|
});
|
|
|
|
for (let i=0; i< Math.min(this.page_length, data.length); i++) {
|
|
this.render_row(this.start + i, data[i]);
|
|
}
|
|
|
|
if (this.start > 0) {
|
|
this.data = this.data.concat(data);
|
|
} else {
|
|
this.data = data;
|
|
}
|
|
|
|
this.clear_empty_rows();
|
|
this.update_more(data.length > this.page_length);
|
|
}
|
|
|
|
async append() {
|
|
this.start += this.page_length;
|
|
await this.run();
|
|
}
|
|
|
|
set_filters() {
|
|
this.filters = {};
|
|
if (this.search_input.value) {
|
|
this.filters.keywords = ['like', '%' + this.search_input.value + '%'];
|
|
}
|
|
}
|
|
|
|
make_body() {
|
|
if (!this.body) {
|
|
this.make_search();
|
|
this.body = frappe.ui.add('div', 'list-body', this.parent);
|
|
this.make_more_btn();
|
|
}
|
|
}
|
|
|
|
make_search() {
|
|
this.search_input_group = frappe.ui.add('div', 'input-group list-search', this.parent);
|
|
|
|
this.search_input = frappe.ui.add('input', 'form-control', this.search_input_group);
|
|
this.search_input.addEventListener('keypress', (event) => {
|
|
if (event.keyCode===13) {
|
|
this.run();
|
|
}
|
|
});
|
|
|
|
this.search_input_group_append = frappe.ui.add('div', 'input-group-append', this.search_input_group);
|
|
this.search_button = frappe.ui.add('button', 'btn btn-secondary', this.search_input_group_append);
|
|
this.search_button.textContent = 'Search';
|
|
this.search_button.addEventListener('click', (event) => {
|
|
this.run();
|
|
});
|
|
}
|
|
|
|
make_more_btn() {
|
|
this.more_btn = frappe.ui.add('button', 'btn btn-secondary hide', this.parent);
|
|
this.more_btn.textContent = 'More';
|
|
this.more_btn.addEventListener('click', () => {
|
|
this.append();
|
|
})
|
|
}
|
|
|
|
render_row(i, data) {
|
|
let row = this.get_row(i);
|
|
row.innerHTML = this.meta.get_row_html(data);
|
|
row.style.display = 'block';
|
|
}
|
|
|
|
get_row(i) {
|
|
if (!this.rows[i]) {
|
|
this.rows[i] = frappe.ui.add('div', 'list-row', this.body);
|
|
}
|
|
return this.rows[i];
|
|
}
|
|
|
|
clear_empty_rows() {
|
|
if (this.rows.length > this.data.length) {
|
|
for (let i=this.data.length; i < this.rows.length; i++) {
|
|
let row = this.get_row(i);
|
|
row.innerHTML = '';
|
|
row.style.display = 'none';
|
|
}
|
|
}
|
|
}
|
|
|
|
update_more(show) {
|
|
if (show) {
|
|
this.more_btn.classList.remove('hide');
|
|
} else {
|
|
this.more_btn.classList.add('hide');
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
/***/ }),
|
|
/* 26 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
const controls = __webpack_require__(27);
|
|
|
|
module.exports = class Form {
|
|
constructor({doctype, parent, submit_label='Submit'}) {
|
|
this.parent = parent;
|
|
this.doctype = doctype;
|
|
this.submit_label = submit_label;
|
|
|
|
this.controls = {};
|
|
this.controls_list = [];
|
|
|
|
this.meta = frappe.get_meta(this.doctype);
|
|
this.make();
|
|
}
|
|
|
|
make() {
|
|
if (this.body || !this.parent) {
|
|
return;
|
|
}
|
|
|
|
this.body = frappe.ui.add('div', 'form-body', this.parent);
|
|
this.make_actions();
|
|
|
|
this.form = frappe.ui.add('form', null, this.body);
|
|
for(let df of this.meta.fields) {
|
|
if (controls.get_control_class(df.fieldtype)) {
|
|
let control = controls.make_control(df, this.form);
|
|
this.controls_list.push(control);
|
|
this.controls[df.fieldname] = control;
|
|
}
|
|
}
|
|
this.make_submit();
|
|
}
|
|
|
|
make_actions() {
|
|
this.toolbar = frappe.ui.add('div', 'form-toolbar', this.body);
|
|
this.actions = frappe.ui.make_dropdown('Actions', this.toolbar);
|
|
|
|
// delete
|
|
this.actions.add_item('Delete', async () => {
|
|
await this.doc.delete();
|
|
this.show_alert('Deleted', 'success');
|
|
});
|
|
|
|
this.actions.float_right();
|
|
}
|
|
|
|
make_submit() {
|
|
this.submit_btn = frappe.ui.add('button', 'btn btn-outline-primary',
|
|
this.body);
|
|
this.submit_btn.setAttribute('type', 'submit');
|
|
this.submit_btn.textContent = this.submit_label;
|
|
this.submit_btn.addEventListener('click', (event) => {
|
|
this.submit();
|
|
event.preventDefault();
|
|
})
|
|
}
|
|
|
|
show_alert(message, type) {
|
|
this.clear_alert();
|
|
this.alert = frappe.ui.add('div', `alert alert-${type}`, this.body);
|
|
this.alert.textContent = message;
|
|
}
|
|
|
|
clear_alert() {
|
|
if (this.alert) {
|
|
frappe.ui.remove(this.alert);
|
|
this.alert = null;
|
|
}
|
|
}
|
|
|
|
async use(doc, is_new = false) {
|
|
if (this.doc) {
|
|
// clear handlers of outgoing doc
|
|
this.doc.clear_handlers();
|
|
}
|
|
this.clear_alert();
|
|
this.doc = doc;
|
|
this.is_new = is_new;
|
|
for (let control of this.controls_list) {
|
|
control.bind(this.doc);
|
|
}
|
|
}
|
|
|
|
async submit() {
|
|
try {
|
|
if (this.is_new || this.doc.__not_inserted) {
|
|
await this.doc.insert();
|
|
} else {
|
|
await this.doc.update();
|
|
}
|
|
await this.refresh();
|
|
this.show_alert('Saved', 'success');
|
|
} catch (e) {
|
|
this.show_alert('Failed', 'danger');
|
|
}
|
|
}
|
|
|
|
refresh() {
|
|
for(let control of this.controls_list) {
|
|
control.refresh();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/***/ }),
|
|
/* 27 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const control_classes = {
|
|
Data: __webpack_require__(28),
|
|
Text: __webpack_require__(29),
|
|
Select: __webpack_require__(30)
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
get_control_class(fieldtype) {
|
|
return control_classes[fieldtype];
|
|
},
|
|
make_control(field, parent) {
|
|
const control_class = this.get_control_class(field.fieldtype);
|
|
let control = new control_class(field, parent);
|
|
control.make();
|
|
return control;
|
|
}
|
|
}
|
|
|
|
/***/ }),
|
|
/* 28 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const BaseControl = __webpack_require__(1);
|
|
|
|
class DataControl extends BaseControl {
|
|
make() {
|
|
super.make();
|
|
this.input.setAttribute('type', 'text');
|
|
}
|
|
};
|
|
|
|
module.exports = DataControl;
|
|
|
|
/***/ }),
|
|
/* 29 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const BaseControl = __webpack_require__(1);
|
|
|
|
class TextControl extends BaseControl {
|
|
make_input() {
|
|
this.input = frappe.ui.add('textarea', 'form-control', this.form_group);
|
|
}
|
|
make() {
|
|
super.make();
|
|
this.input.setAttribute('rows', '8');
|
|
}
|
|
};
|
|
|
|
module.exports = TextControl;
|
|
|
|
/***/ }),
|
|
/* 30 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const BaseControl = __webpack_require__(1);
|
|
|
|
class SelectControl extends BaseControl {
|
|
make_input() {
|
|
this.input = frappe.ui.add('select', 'form-control', this.form_group);
|
|
|
|
let options = this.options;
|
|
if (typeof options==='string') {
|
|
options = options.split('\n');
|
|
}
|
|
|
|
for (let value of options) {
|
|
let option = frappe.ui.add('option', null, this.input);
|
|
option.textContent = value;
|
|
option.setAttribute('value', value);
|
|
}
|
|
}
|
|
make() {
|
|
super.make();
|
|
this.input.setAttribute('row', '3');
|
|
}
|
|
};
|
|
|
|
module.exports = SelectControl;
|
|
|
|
/***/ }),
|
|
/* 31 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
const frappe = __webpack_require__(0);
|
|
|
|
class todo_meta extends frappe.meta.Meta {
|
|
setup_meta() {
|
|
Object.assign(this, __webpack_require__(32));
|
|
this.name = 'ToDo';
|
|
this.list_options.fields = ['name', 'subject', 'status'];
|
|
}
|
|
|
|
get_row_html(data) {
|
|
const sign = data.status === 'Open' ? '' : '✔';
|
|
return `<p><a href="#edit/todo/${data.name}">${sign} ${data.subject}</a></p>`;
|
|
}
|
|
|
|
}
|
|
|
|
class todo extends frappe.document.Document {
|
|
setup() {
|
|
this.add_handler('validate');
|
|
}
|
|
validate() {
|
|
if (!this.status) {
|
|
this.status = 'Open';
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
todo: todo,
|
|
todo_meta: todo_meta
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
/* 32 */
|
|
/***/ (function(module, exports) {
|
|
|
|
module.exports = {"autoname":"hash","name":"ToDo","doctype":"DocType","issingle":0,"keyword_fields":["subject","description"],"fields":[{"fieldname":"subject","label":"Subject","fieldtype":"Data","reqd":1},{"fieldname":"description","label":"Description","fieldtype":"Text"},{"fieldname":"status","label":"Status","fieldtype":"Select","options":["Open","Closed"],"default":"Open","reqd":1}]}
|
|
|
|
/***/ }),
|
|
/* 33 */
|
|
/***/ (function(module, exports) {
|
|
|
|
/*
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
Author Tobias Koppers @sokra
|
|
*/
|
|
// css base code, injected by the css-loader
|
|
module.exports = function(useSourceMap) {
|
|
var list = [];
|
|
|
|
// return the list of modules as css string
|
|
list.toString = function toString() {
|
|
return this.map(function (item) {
|
|
var content = cssWithMappingToString(item, useSourceMap);
|
|
if(item[2]) {
|
|
return "@media " + item[2] + "{" + content + "}";
|
|
} else {
|
|
return content;
|
|
}
|
|
}).join("");
|
|
};
|
|
|
|
// import a list of modules into the list
|
|
list.i = function(modules, mediaQuery) {
|
|
if(typeof modules === "string")
|
|
modules = [[null, modules, ""]];
|
|
var alreadyImportedModules = {};
|
|
for(var i = 0; i < this.length; i++) {
|
|
var id = this[i][0];
|
|
if(typeof id === "number")
|
|
alreadyImportedModules[id] = true;
|
|
}
|
|
for(i = 0; i < modules.length; i++) {
|
|
var item = modules[i];
|
|
// skip already imported module
|
|
// this implementation is not 100% perfect for weird media query combinations
|
|
// when a module is imported multiple times with different media queries.
|
|
// I hope this will never occur (Hey this way we have smaller bundles)
|
|
if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
|
|
if(mediaQuery && !item[2]) {
|
|
item[2] = mediaQuery;
|
|
} else if(mediaQuery) {
|
|
item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
|
|
}
|
|
list.push(item);
|
|
}
|
|
}
|
|
};
|
|
return list;
|
|
};
|
|
|
|
function cssWithMappingToString(item, useSourceMap) {
|
|
var content = item[1] || '';
|
|
var cssMapping = item[3];
|
|
if (!cssMapping) {
|
|
return content;
|
|
}
|
|
|
|
if (useSourceMap && typeof btoa === 'function') {
|
|
var sourceMapping = toComment(cssMapping);
|
|
var sourceURLs = cssMapping.sources.map(function (source) {
|
|
return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'
|
|
});
|
|
|
|
return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
|
|
}
|
|
|
|
return [content].join('\n');
|
|
}
|
|
|
|
// Adapted from convert-source-map (MIT)
|
|
function toComment(sourceMap) {
|
|
// eslint-disable-next-line no-undef
|
|
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
|
|
var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;
|
|
|
|
return '/*# ' + data + ' */';
|
|
}
|
|
|
|
|
|
/***/ })
|
|
/******/ ]);
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgOTczZDEwMmI5NDM5NWY0YTU3NzQiLCJ3ZWJwYWNrOi8vLy4uL2ZyYXBwZWpzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9mcmFwcGVqcy9jbGllbnQvdmlldy9jb250cm9scy9iYXNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4uL2ZyYXBwZWpzL21vZGVsL2RvY3VtZW50LmpzIiwid2VicGFjazovLy8uL2luZGV4LmpzIiwid2VicGFjazovLy8uL3Njc3MvbWFpbi5zY3NzPzE5ZGEiLCJ3ZWJwYWNrOi8vLy4vc2Nzcy9tYWluLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL3VybHMuanMiLCJ3ZWJwYWNrOi8vLy4uL2ZyYXBwZWpzL2NsaWVudC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZnJhcHBlanMvY29tbW9uL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9mcmFwcGVqcy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZnJhcHBlanMvbW9kZWwvbW9kZWxzLmpzIiwid2VicGFjazovLy8uLi9mcmFwcGVqcy9tb2RlbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZnJhcHBlanMvbW9kZWwvbWV0YS5qcyIsIndlYnBhY2s6Ly8vLi4vZnJhcHBlanMvc2Vzc2lvbi5qcyIsIndlYnBhY2s6Ly8vLi4vZnJhcHBlanMvY29tbW9uL2Vycm9ycy5qcyIsIndlYnBhY2s6Ly8vLi4vZnJhcHBlanMvYmFja2VuZHMvcmVzdF9jbGllbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3BhdGgtYnJvd3NlcmlmeS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZnJhcHBlanMvY2xpZW50L3VpL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9mcmFwcGVqcy9jbGllbnQvdWkvZHJvcGRvd24uanMiLCJ3ZWJwYWNrOi8vLy4uL2ZyYXBwZWpzL2NsaWVudC9kZXNrL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9mcmFwcGVqcy9jbGllbnQvZGVzay9zZWFyY2guanMiLCJ3ZWJwYWNrOi8vLy4uL2ZyYXBwZWpzL2NvbW1vbi9yb3V0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4uL2ZyYXBwZWpzL2NsaWVudC92aWV3L3BhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2ZyYXBwZWpzL2NsaWVudC92aWV3L2xpc3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2ZyYXBwZWpzL2NsaWVudC92aWV3L2Zvcm0uanMiLCJ3ZWJwYWNrOi8vLy4uL2ZyYXBwZWpzL2NsaWVudC92aWV3L2NvbnRyb2xzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9mcmFwcGVqcy9jbGllbnQvdmlldy9jb250cm9scy9kYXRhLmpzIiwid2VicGFjazovLy8uLi9mcmFwcGVqcy9jbGllbnQvdmlldy9jb250cm9scy90ZXh0LmpzIiwid2VicGFjazovLy8uLi9mcmFwcGVqcy9jbGllbnQvdmlldy9jb250cm9scy9zZWxlY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2ZyYXBwZWpzL21vZGVscy9kb2N0eXBlL3RvZG8vdG9kby5qcyIsIndlYnBhY2s6Ly8vLi4vZnJhcHBlanMvbW9kZWxzL2RvY3R5cGUvdG9kby90b2RvLmpzb24iLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7OztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLHlCQUF5QjtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSx3Q0FBd0MsaUJBQWlCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ2xHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2Qjs7Ozs7O0FDcEdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsc0JBQXNCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFVBQVU7Ozs7Ozs7QUN2THRDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsMkRBQTJELGFBQWEsR0FBRyxVQUFVO0FBQ3JGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FB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QUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVEQUF1RDtBQUN2RDs7QUFFQSw2QkFBNkIsbUJBQW1COztBQUVoRDs7QUFFQTs7QUFFQTtBQUNBOzs7Ozs7OztBQzVXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUMvTkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSw2QkFBNkIsaURBQWlEO0FBQzlFOztBQUVBLEM7Ozs7OztBQzdDQTs7QUFFQTtBQUNBLGlCQUFpQix1REFBdUQ7QUFDeEU7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMEI7Ozs7OztBQzFGQTtBQUNBO0FBQ0E7QUFDQTtB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QUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdDQUF3QyxzQkFBc0I7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUEsRTs7Ozs7O0FDdkhBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsdUNBQXVDO0FBQ3hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSx5REFBeUQsS0FBSztBQUM5RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQzs7Ozs7O0FDekdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDOzs7Ozs7QUNqQkE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCOzs7Ozs7QUNUQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkI7Ozs7OztBQ1pBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCOzs7Ozs7QUN2QkE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5Q0FBeUMsVUFBVSxJQUFJLEtBQUssR0FBRyxhQUFhO0FBQzVFOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDOUJBLGtCQUFrQix1SEFBdUgsb0VBQW9FLEVBQUUsbUVBQW1FLEVBQUUsaUhBQWlILEU7Ozs7OztBQ0FyWTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGdCQUFnQjtBQUNuRCxJQUFJO0FBQ0o7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0JBQW9CO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxjQUFjOztBQUVsRTtBQUNBIiwiZmlsZSI6Ii4vanMvYnVuZGxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL1wiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIDk3M2QxMDJiOTQzOTVmNGE1Nzc0IiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXN5bmMgaW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2luaXRpYWxpemVkKSByZXR1cm47XG4gICAgICAgIHRoaXMuaW5pdF9jb25maWcoKTtcbiAgICAgICAgdGhpcy5pbml0X2dsb2JhbHMoKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH0sXG5cbiAgICBpbml0X2NvbmZpZygpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAgICAgICBiYWNrZW5kOiAnc3FsaXRlJyxcbiAgICAgICAgICAgIHBvcnQ6IDgwMDBcbiAgICAgICAgfTtcbiAgICB9LFxuXG4gICAgaW5pdF9nbG9iYWxzKCkge1xuICAgICAgICB0aGlzLm1ldGFfY2FjaGUgPSB7fTtcbiAgICAgICAgdGhpcy5kb2NzID0ge307XG4gICAgICAgIHRoaXMuZmxhZ3MgPSB7XG4gICAgICAgICAgICBjYWNoZV9kb2NzOiBmYWxzZVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIGFkZF90b19jYWNoZShkb2MpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZsYWdzLmNhY2hlX2RvY3MpIHJldHVybjtcblxuICAgICAgICAvLyBhZGQgdG8gYGRvY3NgIGNhY2hlXG4gICAgICAgIGlmIChkb2MuZG9jdHlwZSAmJiBkb2MubmFtZSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRvY3NbZG9jLmRvY3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb2NzW2RvYy5kb2N0eXBlXSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kb2NzW2RvYy5kb2N0eXBlXVtkb2MubmFtZV0gPSBkb2M7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0X2RvY19mcm9tX2NhY2hlKGRvY3R5cGUsIG5hbWUpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jc1tkb2N0eXBlXSAmJiB0aGlzLmRvY3NbZG9jdHlwZV1bbmFtZV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3NbZG9jdHlwZV1bbmFtZV07XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0X21ldGEoZG9jdHlwZSkge1xuICAgICAgICBpZiAoIXRoaXMubWV0YV9jYWNoZVtkb2N0eXBlXSkge1xuICAgICAgICAgICAgdGhpcy5tZXRhX2NhY2hlW2RvY3R5cGVdID0gbmV3ICh0aGlzLm1vZGVscy5nZXRfbWV0YV9jbGFzcyhkb2N0eXBlKSkodGhpcy5tb2RlbHMuZ2V0KCdEb2NUeXBlJywgZG9jdHlwZSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGFfY2FjaGVbZG9jdHlwZV07XG4gICAgfSxcblxuICAgIGluaXRfY29udHJvbGxlcihkb2N0eXBlLCBtb2R1bGUpIHtcbiAgICAgICAgZG9jdHlwZSA9IHRoaXMuc2x1Zyhkb2N0eXBlKTtcbiAgICAgICAgdGhpcy5tb2RlbHMuY29udHJvbGxlcnNbZG9jdHlwZV0gPSBtb2R1bGVbZG9jdHlwZV07XG4gICAgICAgIHRoaXMubW9kZWxzLm1ldGFfY2xhc3Nlc1tkb2N0eXBlXSA9IG1vZHVsZVtkb2N0eXBlICsgJ19tZXRhJ107XG4gICAgfSxcblxuICAgIGFzeW5jIGdldF9kb2MoZGF0YSwgbmFtZSkge1xuICAgICAgICBpZiAodHlwZW9mIGRhdGE9PT0nc3RyaW5nJyAmJiB0eXBlb2YgbmFtZT09PSdzdHJpbmcnKSB7XG4gICAgICAgICAgICBsZXQgZG9jID0gdGhpcy5nZXRfZG9jX2Zyb21fY2FjaGUoZGF0YSwgbmFtZSk7XG4gICAgICAgICAgICBpZiAoIWRvYykge1xuICAgICAgICAgICAgICAgIGxldCBjb250cm9sbGVyX2NsYXNzID0gdGhpcy5tb2RlbHMuZ2V0X2NvbnRyb2xsZXIoZGF0YSk7XG4gICAgICAgICAgICAgICAgZG9jID0gbmV3IGNvbnRyb2xsZXJfY2xhc3Moe2RvY3R5cGU6ZGF0YSwgbmFtZTogbmFtZX0pO1xuICAgICAgICAgICAgICAgIGF3YWl0IGRvYy5sb2FkKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRfdG9fY2FjaGUoZG9jKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkb2M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgY29udHJvbGxlcl9jbGFzcyA9IHRoaXMubW9kZWxzLmdldF9jb250cm9sbGVyKGRhdGEuZG9jdHlwZSk7XG4gICAgICAgICAgICB2YXIgZG9jID0gbmV3IGNvbnRyb2xsZXJfY2xhc3MoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRvYztcbiAgICB9LFxuXG4gICAgYXN5bmMgZ2V0X25ld19kb2MoZG9jdHlwZSkge1xuICAgICAgICBsZXQgZG9jID0gYXdhaXQgZnJhcHBlLmdldF9kb2Moe2RvY3R5cGU6IGRvY3R5cGV9KTtcbiAgICAgICAgZG9jLnNldF9uYW1lKCk7XG4gICAgICAgIGRvYy5fX25vdF9pbnNlcnRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRkX3RvX2NhY2hlKGRvYyk7XG4gICAgICAgIHJldHVybiBkb2M7XG4gICAgfSxcblxuICAgIGFzeW5jIGluc2VydChkYXRhKSB7XG4gICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHRoaXMuZ2V0X2RvYyhkYXRhKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGRvYy5pbnNlcnQoKTtcbiAgICB9LFxuXG4gICAgbG9naW4odXNlcj0nZ3Vlc3QnLCB1c2VyX2tleSkge1xuICAgICAgICB0aGlzLnNlc3Npb24gPSBuZXcgdGhpcy5fc2Vzc2lvbi5TZXNzaW9uKHVzZXIpO1xuICAgICAgICBpZiAodXNlciAmJiB1c2VyX2tleSkge1xuICAgICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGUodXNlcl9rZXkpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLmRiLmNsb3NlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL2ZyYXBwZWpzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImNvbnN0IGZyYXBwZSA9IHJlcXVpcmUoJ2ZyYXBwZWpzJyk7XG5cbmNsYXNzIEJhc2VDb250cm9sIHtcbiAgICBjb25zdHJ1Y3Rvcihkb2NmaWVsZCwgcGFyZW50KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZG9jZmllbGQpO1xuICAgICAgICBpZiAoIXRoaXMuZmllbGRuYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkbmFtZSA9IGZyYXBwZS5zbHVnKHRoaXMubGFiZWwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICBpZiAodGhpcy5zZXR1cCkge1xuICAgICAgICAgICAgdGhpcy5zZXR1cCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZChkb2MpIHtcbiAgICAgICAgdGhpcy5kb2MgPSBkb2M7XG5cbiAgICAgICAgdGhpcy5kb2MuYWRkX2hhbmRsZXIodGhpcy5maWVsZG5hbWUsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0X2RvY192YWx1ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNldF9kb2NfdmFsdWUoKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICB0aGlzLm1ha2UoKTtcbiAgICAgICAgdGhpcy5zZXRfZG9jX3ZhbHVlKCk7XG4gICAgfVxuXG4gICAgc2V0X2RvY192YWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jKSB7XG4gICAgICAgICAgICB0aGlzLnNldF9pbnB1dF92YWx1ZSh0aGlzLmRvYy5nZXQodGhpcy5maWVsZG5hbWUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1ha2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtX2dyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLm1ha2VfZm9ybV9ncm91cCgpO1xuICAgICAgICAgICAgdGhpcy5tYWtlX2xhYmVsKCk7XG4gICAgICAgICAgICB0aGlzLm1ha2VfaW5wdXQoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0X2lucHV0X25hbWUoKTtcbiAgICAgICAgICAgIHRoaXMubWFrZV9kZXNjcmlwdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5iaW5kX2NoYW5nZV9ldmVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWFrZV9mb3JtX2dyb3VwKCkge1xuICAgICAgICB0aGlzLmZvcm1fZ3JvdXAgPSBmcmFwcGUudWkuYWRkKCdkaXYnLCAnZm9ybS1ncm91cCcsIHRoaXMucGFyZW50KTtcbiAgICB9XG5cbiAgICBtYWtlX2xhYmVsKCkge1xuICAgICAgICB0aGlzLmxhYmVsX2VsZW1lbnQgPSBmcmFwcGUudWkuYWRkKCdsYWJlbCcsIG51bGwsIHRoaXMuZm9ybV9ncm91cCk7XG4gICAgICAgIHRoaXMubGFiZWxfZWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMubGFiZWw7XG4gICAgfVxuXG4gICAgbWFrZV9pbnB1dCgpIHtcbiAgICAgICAgdGhpcy5pbnB1dCA9IGZyYXBwZS51aS5hZGQoJ2lucHV0JywgJ2Zvcm0tY29udHJvbCcsIHRoaXMuZm9ybV9ncm91cCk7XG4gICAgfVxuXG4gICAgc2V0X2lucHV0X25hbWUoKSB7XG4gICAgICAgIHRoaXMuaW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgdGhpcy5maWVsZG5hbWUpO1xuICAgIH1cblxuICAgIG1ha2VfZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uX2VsZW1lbnQgPSBmcmFwcGUudWkuYWRkKCdzbWFsbCcsICdmb3JtLXRleHQgdGV4dC1tdXRlZCcsIHRoaXMuZm9ybV9ncm91cCk7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uX2VsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLmRlc2NyaXB0aW9uO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0X2lucHV0X3ZhbHVlKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5wdXQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRfaW5wdXRfdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnBhcnNlKHRoaXMuaW5wdXQudmFsdWUpO1xuICAgIH1cblxuICAgIGFzeW5jIHBhcnNlKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBhc3luYyB2YWxpZGF0ZSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgYmluZF9jaGFuZ2VfZXZlbnQoKSB7XG4gICAgICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHRoaXMuaGFuZGxlX2NoYW5nZShlKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlX2NoYW5nZShlKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGF3YWl0IHRoaXMuZ2V0X2lucHV0X3ZhbHVlKCk7XG4gICAgICAgIHZhbHVlID0gYXdhaXQgdGhpcy52YWxpZGF0ZSh2YWx1ZSk7XG4gICAgICAgIGF3YWl0IHRoaXMuZG9jLnNldCh0aGlzLmZpZWxkbmFtZSwgdmFsdWUpO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBCYXNlQ29udHJvbDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9mcmFwcGVqcy9jbGllbnQvdmlldy9jb250cm9scy9iYXNlLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiY29uc3QgZnJhcHBlID0gcmVxdWlyZSgnZnJhcHBlanMnKTtcblxuY2xhc3MgRG9jdW1lbnQge1xuICAgIGNvbnN0cnVjdG9yKGRhdGEpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVycyA9IHt9O1xuICAgICAgICB0aGlzLnNldHVwKCk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGF0YSk7XG4gICAgfVxuXG4gICAgc2V0dXAoKSB7XG4gICAgICAgIC8vIGFkZCBoYW5kbGVyc1xuICAgIH1cblxuICAgIGNsZWFyX2hhbmRsZXJzKCkge1xuICAgICAgICB0aGlzLmhhbmRsZXJzID0ge307XG4gICAgfVxuXG4gICAgYWRkX2hhbmRsZXIoa2V5LCBtZXRob2QpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhbmRsZXJzW2tleV0pIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlcnNba2V5XSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlcnNba2V5XS5wdXNoKG1ldGhvZCB8fCBrZXkpO1xuICAgIH1cblxuICAgIGdldChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgICB9XG5cbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlX2ZpZWxkKGtleSwgdmFsdWUpO1xuICAgICAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBzZXRfbmFtZSgpIHtcbiAgICAgICAgLy8gYXNzaWduIGEgcmFuZG9tIG5hbWUgYnkgZGVmYXVsdFxuICAgICAgICAvLyBvdmVycmlkZSB0aGlzIHRvIHNldCBhIG5hbWVcbiAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldF9rZXl3b3JkcygpIHtcbiAgICAgICAgbGV0IGtleXdvcmRzID0gW107XG4gICAgICAgIGZvciAobGV0IGZpZWxkbmFtZSBvZiB0aGlzLm1ldGEuZ2V0X2tleXdvcmRfZmllbGRzKCkpIHtcbiAgICAgICAgICAgIGtleXdvcmRzLnB1c2godGhpc1tmaWVsZG5hbWVdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmtleXdvcmRzID0ga2V5d29yZHMuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICBnZXQgbWV0YSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9tZXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9tZXRhID0gZnJhcHBlLmdldF9tZXRhKHRoaXMuZG9jdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGE7XG4gICAgfVxuXG4gICAgYXBwZW5kKGtleSwgZG9jdW1lbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzW2tleV0pIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXNba2V5XS5wdXNoKHRoaXMuaW5pdF9kb2MoZG9jdW1lbnQpKTtcbiAgICB9XG5cbiAgICBpbml0X2RvYyhkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhLnByb3RvdHlwZSBpbnN0YW5jZW9mIERvY3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnQoZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZV9maWVsZCAoa2V5LCB2YWx1ZSkge1xuICAgICAgICBsZXQgZGYgPSB0aGlzLm1ldGEuZ2V0X2ZpZWxkKGtleSk7XG4gICAgICAgIGlmIChkZi5maWVsZHR5cGU9PSdTZWxlY3QnKSB7XG4gICAgICAgICAgICB0aGlzLm1ldGEudmFsaWRhdGVfc2VsZWN0KGRmLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRfdmFsaWRfZGljdCgpIHtcbiAgICAgICAgbGV0IGRvYyA9IHt9O1xuICAgICAgICBmb3IobGV0IGRmIG9mIHRoaXMubWV0YS5nZXRfdmFsaWRfZmllbGRzKCkpIHtcbiAgICAgICAgICAgIGRvY1tkZi5maWVsZG5hbWVdID0gdGhpcy5nZXQoZGYuZmllbGRuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZG9jO1xuICAgIH1cblxuICAgIHNldF9zdGFuZGFyZF92YWx1ZXMoKSB7XG4gICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBpZiAodGhpcy5kb2NzdGF0dXMgPT09IG51bGwgfHwgdGhpcy5kb2NzdGF0dXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5kb2NzdGF0dXMgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5vd25lcikge1xuICAgICAgICAgICAgdGhpcy5vd25lciA9IGZyYXBwZS5zZXNzaW9uLnVzZXI7XG4gICAgICAgICAgICB0aGlzLmNyZWF0aW9uID0gbm93O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9kaWZpZWRfYnkgPSBmcmFwcGUuc2Vzc2lvbi51c2VyO1xuICAgICAgICB0aGlzLm1vZGlmaWVkID0gbm93O1xuICAgIH1cblxuICAgIGFzeW5jIGxvYWQoKSB7XG4gICAgICAgIGxldCBkYXRhID0gYXdhaXQgZnJhcHBlLmRiLmdldCh0aGlzLmRvY3R5cGUsIHRoaXMubmFtZSk7XG4gICAgICAgIGlmIChkYXRhLm5hbWUpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgZnJhcHBlLmVycm9ycy5Ob3RGb3VuZChgTm90IEZvdW5kOiAke3RoaXMuZG9jdHlwZX0gJHt0aGlzLm5hbWV9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBpbnNlcnQoKSB7XG4gICAgICAgIHRoaXMuc2V0X25hbWUoKTtcbiAgICAgICAgdGhpcy5zZXRfc3RhbmRhcmRfdmFsdWVzKCk7XG4gICAgICAgIHRoaXMuc2V0X2tleXdvcmRzKCk7XG4gICAgICAgIGF3YWl0IHRoaXMudHJpZ2dlcigndmFsaWRhdGUnLCAnYmVmb3JlX2luc2VydCcpO1xuICAgICAgICBhd2FpdCBmcmFwcGUuZGIuaW5zZXJ0KHRoaXMuZG9jdHlwZSwgdGhpcy5nZXRfdmFsaWRfZGljdCgpKTtcbiAgICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyKCdhZnRlcl9pbnNlcnQnLCAnYWZ0ZXJfc2F2ZScpO1xuICAgIH1cblxuICAgIGFzeW5jIGRlbGV0ZSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyKCdiZWZvcmVfZGVsZXRlJyk7XG4gICAgICAgIGF3YWl0IGZyYXBwZS5kYi5kZWxldGUodGhpcy5kb2N0eXBlLCB0aGlzLm5hbWUpO1xuICAgICAgICBhd2FpdCB0aGlzLnRyaWdnZXIoJ2FmdGVyX2RlbGV0ZScpO1xuICAgIH1cblxuICAgIGFzeW5jIHRyaWdnZXIoKSB7XG4gICAgICAgIGZvcih2YXIga2V5IG9mIGFyZ3VtZW50cykge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFuZGxlcnNba2V5XSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IG1ldGhvZCBvZiB0aGlzLmhhbmRsZXJzW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzW21ldGhvZF0oKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG1ldGhvZCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHVwZGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zZXRfc3RhbmRhcmRfdmFsdWVzKCk7XG4gICAgICAgIHRoaXMuc2V0X2tleXdvcmRzKCk7XG4gICAgICAgIGF3YWl0IHRoaXMudHJpZ2dlcigndmFsaWRhdGUnLCAnYmVmb3JlX3VwZGF0ZScpO1xuICAgICAgICBhd2FpdCBmcmFwcGUuZGIudXBkYXRlKHRoaXMuZG9jdHlwZSwgdGhpcy5nZXRfdmFsaWRfZGljdCgpKTtcbiAgICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyKCdhZnRlcl91cGRhdGUnLCAnYWZ0ZXJfc2F2ZScpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHsgRG9jdW1lbnQ6IERvY3VtZW50IH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vZnJhcHBlanMvbW9kZWwvZG9jdW1lbnQuanNcbi8vIG1vZHVsZSBpZCA9IDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwicmVxdWlyZSgnLi9zY3NzL21haW4uc2NzcycpO1xuXG5jb25zdCBjbGllbnQgPSByZXF1aXJlKCdmcmFwcGVqcy9jbGllbnQnKTtcblxuLy8gc3RhcnQgc2VydmVyXG5jbGllbnQuc3RhcnQoe1xuICAgIHNlcnZlcjogJ2xvY2FsaG9zdDo4MDAwJyxcbiAgICBjb250YWluZXI6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53cmFwcGVyJyksXG59KS50aGVuKCgpID0+IHtcbiAgICBjb25zdCB0b2RvID0gcmVxdWlyZSgnZnJhcHBlanMvbW9kZWxzL2RvY3R5cGUvdG9kby90b2RvLmpzJyk7XG4gICAgZnJhcHBlLmluaXRfY29udHJvbGxlcigndG9kbycsIHRvZG8pO1xuXG4gICAgZnJhcHBlLmRlc2suYWRkX3NpZGViYXJfaXRlbSgnSG9tZScsICcjJyk7XG4gICAgZnJhcHBlLmRlc2suYWRkX3NpZGViYXJfaXRlbSgnTmV3IFRvRG8nLCAnI25ldy90b2RvJyk7XG5cbiAgICBmcmFwcGUucm91dGVyLmRlZmF1bHQgPSAnL2xpc3QvdG9kbyc7XG5cbiAgICBmcmFwcGUucm91dGVyLnNob3cod2luZG93LmxvY2F0aW9uLmhhc2gpO1xufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS0wLTIhLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2xpYi9sb2FkZXIuanM/P3JlZi0tMC0zIS4vbWFpbi5zY3NzXCIpO1xuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG4vLyBQcmVwYXJlIGNzc1RyYW5zZm9ybWF0aW9uXG52YXIgdHJhbnNmb3JtO1xuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG5cdC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdGlmKCFjb250ZW50LmxvY2Fscykge1xuXHRcdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTAtMiEuLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvbGliL2xvYWRlci5qcz8/cmVmLS0wLTMhLi9tYWluLnNjc3NcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tMC0yIS4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9saWIvbG9hZGVyLmpzPz9yZWYtLTAtMyEuL21haW4uc2Nzc1wiKTtcblx0XHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXHRcdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHRcdH0pO1xuXHR9XG5cdC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3Ncblx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zY3NzL21haW4uc2Nzc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi8qIVxcbiAqIEJvb3RzdHJhcCB2NC4wLjAtYmV0YS4zIChodHRwczovL2dldGJvb3RzdHJhcC5jb20pXFxuICogQ29weXJpZ2h0IDIwMTEtMjAxNyBUaGUgQm9vdHN0cmFwIEF1dGhvcnNcXG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE3IFR3aXR0ZXIsIEluYy5cXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKVxcbiAqL1xcbiosICo6OmJlZm9yZSwgKjo6YWZ0ZXIge1xcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XFxuaHRtbCB7XFxuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xcbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XFxuICAtbXMtb3ZlcmZsb3ctc3R5bGU6IHNjcm9sbGJhcjtcXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cXG5ALW1zLXZpZXdwb3J0IHtcXG4gIHdpZHRoOiBkZXZpY2Utd2lkdGg7IH1cXG5hcnRpY2xlLCBhc2lkZSwgZGlhbG9nLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG5hdiwgc2VjdGlvbiB7XFxuICBkaXNwbGF5OiBibG9jazsgfVxcbmJvZHkge1xcbiAgbWFyZ2luOiAwO1xcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBBcmlhbCwgc2Fucy1zZXJpZiwgXFxcIkFwcGxlIENvbG9yIEVtb2ppXFxcIiwgXFxcIlNlZ29lIFVJIEVtb2ppXFxcIiwgXFxcIlNlZ29lIFVJIFN5bWJvbFxcXCI7XFxuICBmb250LXNpemU6IDFyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIGNvbG9yOiAjMjEyNTI5O1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cXG5bdGFiaW5kZXg9XFxcIi0xXFxcIl06Zm9jdXMge1xcbiAgb3V0bGluZTogMCAhaW1wb3J0YW50OyB9XFxuaHIge1xcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gICAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XFxuICBoZWlnaHQ6IDA7XFxuICBvdmVyZmxvdzogdmlzaWJsZTsgfVxcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTsgfVxcbnAge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIG1hcmdpbi1ib3R0b206IDFyZW07IH1cXG5hYmJyW3RpdGxlXSwgYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7XFxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XFxuICBjdXJzb3I6IGhlbHA7XFxuICBib3JkZXItYm90dG9tOiAwOyB9XFxuYWRkcmVzcyB7XFxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH1cXG5vbCwgdWwsIGRsIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBtYXJnaW4tYm90dG9tOiAxcmVtOyB9XFxub2wgb2wsIHVsIHVsLCBvbCB1bCwgdWwgb2wge1xcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxcbmR0IHtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7IH1cXG5kZCB7XFxuICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcXG4gIG1hcmdpbi1sZWZ0OiAwOyB9XFxuYmxvY2txdW90ZSB7XFxuICBtYXJnaW46IDAgMCAxcmVtOyB9XFxuZGZuIHtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxcbmIsIHN0cm9uZyB7XFxuICBmb250LXdlaWdodDogYm9sZGVyOyB9XFxuc21hbGwge1xcbiAgZm9udC1zaXplOiA4MCU7IH1cXG5zdWIsIHN1cCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBmb250LXNpemU6IDc1JTtcXG4gIGxpbmUtaGVpZ2h0OiAwO1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XFxuc3ViIHtcXG4gIGJvdHRvbTogLS4yNWVtOyB9XFxuc3VwIHtcXG4gIHRvcDogLS41ZW07IH1cXG5hIHtcXG4gIGNvbG9yOiAjMDA3YmZmO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyB9XFxuYTpob3ZlciB7XFxuICAgIGNvbG9yOiAjMDA1NmIzO1xcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfVxcbmE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pIHtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XFxuYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6Zm9jdXMsIGE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pOmhvdmVyIHtcXG4gICAgY29sb3I6IGluaGVyaXQ7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxcbmE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pOmZvY3VzIHtcXG4gICAgb3V0bGluZTogMDsgfVxcbnByZSwgY29kZSwga2JkLCBzYW1wIHtcXG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcXG4gIGZvbnQtc2l6ZTogMWVtOyB9XFxucHJlIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICAtbXMtb3ZlcmZsb3ctc3R5bGU6IHNjcm9sbGJhcjsgfVxcbmZpZ3VyZSB7XFxuICBtYXJnaW46IDAgMCAxcmVtOyB9XFxuaW1nIHtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICBib3JkZXItc3R5bGU6IG5vbmU7IH1cXG5zdmc6bm90KDpyb290KSB7XFxuICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuYSwgYXJlYSwgYnV0dG9uLCBbcm9sZT1cXFwiYnV0dG9uXFxcIl0sIGlucHV0Om5vdChbdHlwZT1cXFwicmFuZ2VcXFwiXSksIGxhYmVsLCBzZWxlY3QsIHN1bW1hcnksIHRleHRhcmVhIHtcXG4gIC1tcy10b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcXG4gICAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgfVxcbnRhYmxlIHtcXG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IH1cXG5jYXB0aW9uIHtcXG4gIHBhZGRpbmctdG9wOiAwLjc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XFxuICBjb2xvcjogIzg2OGU5NjtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICBjYXB0aW9uLXNpZGU6IGJvdHRvbTsgfVxcbnRoIHtcXG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IH1cXG5sYWJlbCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBtYXJnaW4tYm90dG9tOiAuNXJlbTsgfVxcbmJ1dHRvbiB7XFxuICBib3JkZXItcmFkaXVzOiAwOyB9XFxuYnV0dG9uOmZvY3VzIHtcXG4gIG91dGxpbmU6IDFweCBkb3R0ZWQ7XFxuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7IH1cXG5pbnB1dCwgYnV0dG9uLCBzZWxlY3QsIG9wdGdyb3VwLCB0ZXh0YXJlYSB7XFxuICBtYXJnaW46IDA7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0OyB9XFxuYnV0dG9uLCBpbnB1dCB7XFxuICBvdmVyZmxvdzogdmlzaWJsZTsgfVxcbmJ1dHRvbiwgc2VsZWN0IHtcXG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyB9XFxuYnV0dG9uLCBodG1sIFt0eXBlPVxcXCJidXR0b25cXFwiXSwgW3R5cGU9XFxcInJlc2V0XFxcIl0sIFt0eXBlPVxcXCJzdWJtaXRcXFwiXSB7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgfVxcbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9XFxcImJ1dHRvblxcXCJdOjotbW96LWZvY3VzLWlubmVyLCBbdHlwZT1cXFwicmVzZXRcXFwiXTo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9XFxcInN1Ym1pdFxcXCJdOjotbW96LWZvY3VzLWlubmVyIHtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXItc3R5bGU6IG5vbmU7IH1cXG5pbnB1dFt0eXBlPVxcXCJyYWRpb1xcXCJdLCBpbnB1dFt0eXBlPVxcXCJjaGVja2JveFxcXCJdIHtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBhZGRpbmc6IDA7IH1cXG5pbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl0sIGlucHV0W3R5cGU9XFxcInRpbWVcXFwiXSwgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXSwgaW5wdXRbdHlwZT1cXFwibW9udGhcXFwiXSB7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGxpc3Rib3g7IH1cXG50ZXh0YXJlYSB7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIHJlc2l6ZTogdmVydGljYWw7IH1cXG5maWVsZHNldCB7XFxuICBtaW4td2lkdGg6IDA7XFxuICBwYWRkaW5nOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgYm9yZGVyOiAwOyB9XFxubGVnZW5kIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBwYWRkaW5nOiAwO1xcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XFxuICBmb250LXNpemU6IDEuNXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbiAgY29sb3I6IGluaGVyaXQ7XFxuICB3aGl0ZS1zcGFjZTogbm9ybWFsOyB9XFxucHJvZ3Jlc3Mge1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XFxuW3R5cGU9XFxcIm51bWJlclxcXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLCBbdHlwZT1cXFwibnVtYmVyXFxcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xcbiAgaGVpZ2h0OiBhdXRvOyB9XFxuW3R5cGU9XFxcInNlYXJjaFxcXCJdIHtcXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9XFxuW3R5cGU9XFxcInNlYXJjaFxcXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLCBbdHlwZT1cXFwic2VhcmNoXFxcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9XFxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XFxuICBmb250OiBpbmhlcml0O1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IH1cXG5vdXRwdXQge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XFxuc3VtbWFyeSB7XFxuICBkaXNwbGF5OiBsaXN0LWl0ZW07XFxuICBjdXJzb3I6IHBvaW50ZXI7IH1cXG50ZW1wbGF0ZSB7XFxuICBkaXNwbGF5OiBub25lOyB9XFxuW2hpZGRlbl0ge1xcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XFxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgLmgxLCAuaDIsIC5oMywgLmg0LCAuaDUsIC5oNiB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBsaW5lLWhlaWdodDogMS4yO1xcbiAgY29sb3I6IGluaGVyaXQ7IH1cXG5oMSwgLmgxIHtcXG4gIGZvbnQtc2l6ZTogMi41cmVtOyB9XFxuaDIsIC5oMiB7XFxuICBmb250LXNpemU6IDJyZW07IH1cXG5oMywgLmgzIHtcXG4gIGZvbnQtc2l6ZTogMS43NXJlbTsgfVxcbmg0LCAuaDQge1xcbiAgZm9udC1zaXplOiAxLjVyZW07IH1cXG5oNSwgLmg1IHtcXG4gIGZvbnQtc2l6ZTogMS4yNXJlbTsgfVxcbmg2LCAuaDYge1xcbiAgZm9udC1zaXplOiAxcmVtOyB9XFxuLmxlYWQge1xcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDMwMDsgfVxcbi5kaXNwbGF5LTEge1xcbiAgZm9udC1zaXplOiA2cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI7IH1cXG4uZGlzcGxheS0yIHtcXG4gIGZvbnQtc2l6ZTogNS41cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI7IH1cXG4uZGlzcGxheS0zIHtcXG4gIGZvbnQtc2l6ZTogNC41cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI7IH1cXG4uZGlzcGxheS00IHtcXG4gIGZvbnQtc2l6ZTogMy41cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI7IH1cXG5ociB7XFxuICBtYXJnaW4tdG9wOiAxcmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcXG4gIGJvcmRlcjogMDtcXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7IH1cXG5zbWFsbCwgLnNtYWxsIHtcXG4gIGZvbnQtc2l6ZTogODAlO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDsgfVxcbm1hcmssIC5tYXJrIHtcXG4gIHBhZGRpbmc6IDAuMmVtO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsgfVxcbi5saXN0LXVuc3R5bGVkIHtcXG4gIHBhZGRpbmctbGVmdDogMDtcXG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cXG4ubGlzdC1pbmxpbmUge1xcbiAgcGFkZGluZy1sZWZ0OiAwO1xcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxcbi5saXN0LWlubGluZS1pdGVtIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxcbi5saXN0LWlubGluZS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsgfVxcbi5pbml0aWFsaXNtIHtcXG4gIGZvbnQtc2l6ZTogOTAlO1xcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxcbi5ibG9ja3F1b3RlIHtcXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XFxuICBmb250LXNpemU6IDEuMjVyZW07IH1cXG4uYmxvY2txdW90ZS1mb290ZXIge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBmb250LXNpemU6IDgwJTtcXG4gIGNvbG9yOiAjODY4ZTk2OyB9XFxuLmJsb2NrcXVvdGUtZm9vdGVyOjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXDIwMTQgICBcXFxcQTBcXFwiOyB9XFxuLmltZy1mbHVpZCB7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IGF1dG87IH1cXG4uaW1nLXRodW1ibmFpbCB7XFxuICBwYWRkaW5nOiAwLjI1cmVtO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiBhdXRvOyB9XFxuLmZpZ3VyZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cXG4uZmlndXJlLWltZyB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxuICBsaW5lLWhlaWdodDogMTsgfVxcbi5maWd1cmUtY2FwdGlvbiB7XFxuICBmb250LXNpemU6IDkwJTtcXG4gIGNvbG9yOiAjODY4ZTk2OyB9XFxuY29kZSwga2JkLCBwcmUsIHNhbXAge1xcbiAgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgXFxcIkxpYmVyYXRpb24gTW9ub1xcXCIsIFxcXCJDb3VyaWVyIE5ld1xcXCIsIG1vbm9zcGFjZTsgfVxcbmNvZGUge1xcbiAgZm9udC1zaXplOiA4Ny41JTtcXG4gIGNvbG9yOiAjZTgzZThjO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDsgfVxcbmEgPiBjb2RlIHtcXG4gICAgY29sb3I6IGluaGVyaXQ7IH1cXG5rYmQge1xcbiAgcGFkZGluZzogMC4ycmVtIDAuNHJlbTtcXG4gIGZvbnQtc2l6ZTogODcuNSU7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTI1Mjk7XFxuICBib3JkZXItcmFkaXVzOiAwLjJyZW07IH1cXG5rYmQga2JkIHtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgZm9udC1zaXplOiAxMDAlO1xcbiAgICBmb250LXdlaWdodDogNzAwOyB9XFxucHJlIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgZm9udC1zaXplOiA4Ny41JTtcXG4gIGNvbG9yOiAjMjEyNTI5OyB9XFxucHJlIGNvZGUge1xcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICB3b3JkLWJyZWFrOiBub3JtYWw7IH1cXG4ucHJlLXNjcm9sbGFibGUge1xcbiAgbWF4LWhlaWdodDogMzQwcHg7XFxuICBvdmVyZmxvdy15OiBzY3JvbGw7IH1cXG4uY29udGFpbmVyIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgcGFkZGluZy1yaWdodDogMTVweDtcXG4gIHBhZGRpbmctbGVmdDogMTVweDtcXG4gIG1hcmdpbi1yaWdodDogYXV0bztcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvOyB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XFxuICAgIC5jb250YWluZXIge1xcbiAgICAgIG1heC13aWR0aDogNTQwcHg7IH0gfVxcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xcbiAgICAuY29udGFpbmVyIHtcXG4gICAgICBtYXgtd2lkdGg6IDcyMHB4OyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcXG4gICAgLmNvbnRhaW5lciB7XFxuICAgICAgbWF4LXdpZHRoOiA5NjBweDsgfSB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xcbiAgICAuY29udGFpbmVyIHtcXG4gICAgICBtYXgtd2lkdGg6IDExNDBweDsgfSB9XFxuLmNvbnRhaW5lci1mbHVpZCB7XFxuICB3aWR0aDogMTAwJTtcXG4gIHBhZGRpbmctcmlnaHQ6IDE1cHg7XFxuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XFxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XFxuICBtYXJnaW4tbGVmdDogYXV0bzsgfVxcbi5yb3cge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcXG4gIG1hcmdpbi1yaWdodDogLTE1cHg7XFxuICBtYXJnaW4tbGVmdDogLTE1cHg7IH1cXG4ubm8tZ3V0dGVycyB7XFxuICBtYXJnaW4tcmlnaHQ6IDA7XFxuICBtYXJnaW4tbGVmdDogMDsgfVxcbi5uby1ndXR0ZXJzID4gLmNvbCwgLm5vLWd1dHRlcnMgPiBbY2xhc3MqPVxcXCJjb2wtXFxcIl0ge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDA7IH1cXG4uY29sLTEsIC5jb2wtMiwgLmNvbC0zLCAuY29sLTQsIC5jb2wtNSwgLmNvbC02LCAuY29sLTcsIC5jb2wtOCwgLmNvbC05LCAuY29sLTEwLCAuY29sLTExLCAuY29sLTEyLCAuY29sLCAuY29sLWF1dG8sIC5jb2wtc20tMSwgLmNvbC1zbS0yLCAuY29sLXNtLTMsIC5jb2wtc20tNCwgLmNvbC1zbS01LCAuY29sLXNtLTYsIC5jb2wtc20tNywgLmNvbC1zbS04LCAuY29sLXNtLTksIC5jb2wtc20tMTAsIC5jb2wtc20tMTEsIC5jb2wtc20tMTIsIC5jb2wtc20sIC5jb2wtc20tYXV0bywgLmNvbC1tZC0xLCAuY29sLW1kLTIsIC5jb2wtbWQtMywgLmNvbC1tZC00LCAuY29sLW1kLTUsIC5jb2wtbWQtNiwgLmNvbC1tZC03LCAuY29sLW1kLTgsIC5jb2wtbWQtOSwgLmNvbC1tZC0xMCwgLmNvbC1tZC0xMSwgLmNvbC1tZC0xMiwgLmNvbC1tZCwgLmNvbC1tZC1hdXRvLCAuY29sLWxnLTEsIC5jb2wtbGctMiwgLmNvbC1sZy0zLCAuY29sLWxnLTQsIC5jb2wtbGctNSwgLmNvbC1sZy02LCAuY29sLWxnLTcsIC5jb2wtbGctOCwgLmNvbC1sZy05LCAuY29sLWxnLTEwLCAuY29sLWxnLTExLCAuY29sLWxnLTEyLCAuY29sLWxnLCAuY29sLWxnLWF1dG8sIC5jb2wteGwtMSwgLmNvbC14bC0yLCAuY29sLXhsLTMsIC5jb2wteGwtNCwgLmNvbC14bC01LCAuY29sLXhsLTYsIC5jb2wteGwtNywgLmNvbC14bC04LCAuY29sLXhsLTksIC5jb2wteGwtMTAsIC5jb2wteGwtMTEsIC5jb2wteGwtMTIsIC5jb2wteGwsIC5jb2wteGwtYXV0byB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1pbi1oZWlnaHQ6IDFweDtcXG4gIHBhZGRpbmctcmlnaHQ6IDE1cHg7XFxuICBwYWRkaW5nLWxlZnQ6IDE1cHg7IH1cXG4uY29sIHtcXG4gIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwO1xcbiAgICAgIGZsZXgtYmFzaXM6IDA7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxO1xcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XFxuICBtYXgtd2lkdGg6IDEwMCU7IH1cXG4uY29sLWF1dG8ge1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAtbXMtZmxleDogMCAwIGF1dG87XFxuICAgICAgICAgIGZsZXg6IDAgMCBhdXRvO1xcbiAgd2lkdGg6IGF1dG87XFxuICBtYXgtd2lkdGg6IG5vbmU7IH1cXG4uY29sLTEge1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAtbXMtZmxleDogMCAwIDguMzMzMzMlO1xcbiAgICAgICAgICBmbGV4OiAwIDAgOC4zMzMzMyU7XFxuICBtYXgtd2lkdGg6IDguMzMzMzMlOyB9XFxuLmNvbC0yIHtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgLW1zLWZsZXg6IDAgMCAxNi42NjY2NyU7XFxuICAgICAgICAgIGZsZXg6IDAgMCAxNi42NjY2NyU7XFxuICBtYXgtd2lkdGg6IDE2LjY2NjY3JTsgfVxcbi5jb2wtMyB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgIC1tcy1mbGV4OiAwIDAgMjUlO1xcbiAgICAgICAgICBmbGV4OiAwIDAgMjUlO1xcbiAgbWF4LXdpZHRoOiAyNSU7IH1cXG4uY29sLTQge1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAtbXMtZmxleDogMCAwIDMzLjMzMzMzJTtcXG4gICAgICAgICAgZmxleDogMCAwIDMzLjMzMzMzJTtcXG4gIG1heC13aWR0aDogMzMuMzMzMzMlOyB9XFxuLmNvbC01IHtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgLW1zLWZsZXg6IDAgMCA0MS42NjY2NyU7XFxuICAgICAgICAgIGZsZXg6IDAgMCA0MS42NjY2NyU7XFxuICBtYXgtd2lkdGg6IDQxLjY2NjY3JTsgfVxcbi5jb2wtNiB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgIC1tcy1mbGV4OiAwIDAgNTAlO1xcbiAgICAgICAgICBmbGV4OiAwIDAgNTAlO1xcbiAgbWF4LXdpZHRoOiA1MCU7IH1cXG4uY29sLTcge1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAtbXMtZmxleDogMCAwIDU4LjMzMzMzJTtcXG4gICAgICAgICAgZmxleDogMCAwIDU4LjMzMzMzJTtcXG4gIG1heC13aWR0aDogNTguMzMzMzMlOyB9XFxuLmNvbC04IHtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgLW1zLWZsZXg6IDAgMCA2Ni42NjY2NyU7XFxuICAgICAgICAgIGZsZXg6IDAgMCA2Ni42NjY2NyU7XFxuICBtYXgtd2lkdGg6IDY2LjY2NjY3JTsgfVxcbi5jb2wtOSB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgIC1tcy1mbGV4OiAwIDAgNzUlO1xcbiAgICAgICAgICBmbGV4OiAwIDAgNzUlO1xcbiAgbWF4LXdpZHRoOiA3NSU7IH1cXG4uY29sLTEwIHtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgLW1zLWZsZXg6IDAgMCA4My4zMzMzMyU7XFxuICAgICAgICAgIGZsZXg6IDAgMCA4My4zMzMzMyU7XFxuICBtYXgtd2lkdGg6IDgzLjMzMzMzJTsgfVxcbi5jb2wtMTEge1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAtbXMtZmxleDogMCAwIDkxLjY2NjY3JTtcXG4gICAgICAgICAgZmxleDogMCAwIDkxLjY2NjY3JTtcXG4gIG1heC13aWR0aDogOTEuNjY2NjclOyB9XFxuLmNvbC0xMiB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgIC1tcy1mbGV4OiAwIDAgMTAwJTtcXG4gICAgICAgICAgZmxleDogMCAwIDEwMCU7XFxuICBtYXgtd2lkdGg6IDEwMCU7IH1cXG4ub3JkZXItZmlyc3Qge1xcbiAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMDtcXG4gICAgICAtbXMtZmxleC1vcmRlcjogLTE7XFxuICAgICAgICAgIG9yZGVyOiAtMTsgfVxcbi5vcmRlci0xIHtcXG4gIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7XFxuICAgICAgLW1zLWZsZXgtb3JkZXI6IDE7XFxuICAgICAgICAgIG9yZGVyOiAxOyB9XFxuLm9yZGVyLTIge1xcbiAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMztcXG4gICAgICAtbXMtZmxleC1vcmRlcjogMjtcXG4gICAgICAgICAgb3JkZXI6IDI7IH1cXG4ub3JkZXItMyB7XFxuICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA0O1xcbiAgICAgIC1tcy1mbGV4LW9yZGVyOiAzO1xcbiAgICAgICAgICBvcmRlcjogMzsgfVxcbi5vcmRlci00IHtcXG4gIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDU7XFxuICAgICAgLW1zLWZsZXgtb3JkZXI6IDQ7XFxuICAgICAgICAgIG9yZGVyOiA0OyB9XFxuLm9yZGVyLTUge1xcbiAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNjtcXG4gICAgICAtbXMtZmxleC1vcmRlcjogNTtcXG4gICAgICAgICAgb3JkZXI6IDU7IH1cXG4ub3JkZXItNiB7XFxuICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA3O1xcbiAgICAgIC1tcy1mbGV4LW9yZGVyOiA2O1xcbiAgICAgICAgICBvcmRlcjogNjsgfVxcbi5vcmRlci03IHtcXG4gIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDg7XFxuICAgICAgLW1zLWZsZXgtb3JkZXI6IDc7XFxuICAgICAgICAgIG9yZGVyOiA3OyB9XFxuLm9yZGVyLTgge1xcbiAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogOTtcXG4gICAgICAtbXMtZmxleC1vcmRlcjogODtcXG4gICAgICAgICAgb3JkZXI6IDg7IH1cXG4ub3JkZXItOSB7XFxuICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMDtcXG4gICAgICAtbXMtZmxleC1vcmRlcjogOTtcXG4gICAgICAgICAgb3JkZXI6IDk7IH1cXG4ub3JkZXItMTAge1xcbiAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTE7XFxuICAgICAgLW1zLWZsZXgtb3JkZXI6IDEwO1xcbiAgICAgICAgICBvcmRlcjogMTA7IH1cXG4ub3JkZXItMTEge1xcbiAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTI7XFxuICAgICAgLW1zLWZsZXgtb3JkZXI6IDExO1xcbiAgICAgICAgICBvcmRlcjogMTE7IH1cXG4ub3JkZXItMTIge1xcbiAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTM7XFxuICAgICAgLW1zLWZsZXgtb3JkZXI6IDEyO1xcbiAgICAgICAgICBvcmRlcjogMTI7IH1cXG4ub2Zmc2V0LTEge1xcbiAgbWFyZ2luLWxlZnQ6IDguMzMzMzMlOyB9XFxuLm9mZnNldC0yIHtcXG4gIG1hcmdpbi1sZWZ0OiAxNi42NjY2NyU7IH1cXG4ub2Zmc2V0LTMge1xcbiAgbWFyZ2luLWxlZnQ6IDI1JTsgfVxcbi5vZmZzZXQtNCB7XFxuICBtYXJnaW4tbGVmdDogMzMuMzMzMzMlOyB9XFxuLm9mZnNldC01IHtcXG4gIG1hcmdpbi1sZWZ0OiA0MS42NjY2NyU7IH1cXG4ub2Zmc2V0LTYge1xcbiAgbWFyZ2luLWxlZnQ6IDUwJTsgfVxcbi5vZmZzZXQtNyB7XFxuICBtYXJnaW4tbGVmdDogNTguMzMzMzMlOyB9XFxuLm9mZnNldC04IHtcXG4gIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NyU7IH1cXG4ub2Zmc2V0LTkge1xcbiAgbWFyZ2luLWxlZnQ6IDc1JTsgfVxcbi5vZmZzZXQtMTAge1xcbiAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzJTsgfVxcbi5vZmZzZXQtMTEge1xcbiAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY3JTsgfVxcbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xcbiAgLmNvbC1zbSB7XFxuICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwO1xcbiAgICAgICAgZmxleC1iYXNpczogMDtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxO1xcbiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcXG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9XFxuICAuY29sLXNtLWF1dG8ge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCBhdXRvO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCBhdXRvO1xcbiAgICB3aWR0aDogYXV0bztcXG4gICAgbWF4LXdpZHRoOiBub25lOyB9XFxuICAuY29sLXNtLTEge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCA4LjMzMzMzJTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgOC4zMzMzMyU7XFxuICAgIG1heC13aWR0aDogOC4zMzMzMyU7IH1cXG4gIC5jb2wtc20tMiB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDE2LjY2NjY3JTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgMTYuNjY2NjclO1xcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY3JTsgfVxcbiAgLmNvbC1zbS0zIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgMjUlO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCAyNSU7XFxuICAgIG1heC13aWR0aDogMjUlOyB9XFxuICAuY29sLXNtLTQge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCAzMy4zMzMzMyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDMzLjMzMzMzJTtcXG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH1cXG4gIC5jb2wtc20tNSB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDQxLjY2NjY3JTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgNDEuNjY2NjclO1xcbiAgICBtYXgtd2lkdGg6IDQxLjY2NjY3JTsgfVxcbiAgLmNvbC1zbS02IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgNTAlO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCA1MCU7XFxuICAgIG1heC13aWR0aDogNTAlOyB9XFxuICAuY29sLXNtLTcge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCA1OC4zMzMzMyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDU4LjMzMzMzJTtcXG4gICAgbWF4LXdpZHRoOiA1OC4zMzMzMyU7IH1cXG4gIC5jb2wtc20tOCB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDY2LjY2NjY3JTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgNjYuNjY2NjclO1xcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY3JTsgfVxcbiAgLmNvbC1zbS05IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgNzUlO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCA3NSU7XFxuICAgIG1heC13aWR0aDogNzUlOyB9XFxuICAuY29sLXNtLTEwIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgODMuMzMzMzMlO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCA4My4zMzMzMyU7XFxuICAgIG1heC13aWR0aDogODMuMzMzMzMlOyB9XFxuICAuY29sLXNtLTExIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgOTEuNjY2NjclO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCA5MS42NjY2NyU7XFxuICAgIG1heC13aWR0aDogOTEuNjY2NjclOyB9XFxuICAuY29sLXNtLTEyIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgMTAwJTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgMTAwJTtcXG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9XFxuICAub3JkZXItc20tZmlyc3Qge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAwO1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IC0xO1xcbiAgICAgICAgICAgIG9yZGVyOiAtMTsgfVxcbiAgLm9yZGVyLXNtLTEge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAyO1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDE7XFxuICAgICAgICAgICAgb3JkZXI6IDE7IH1cXG4gIC5vcmRlci1zbS0yIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMztcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAyO1xcbiAgICAgICAgICAgIG9yZGVyOiAyOyB9XFxuICAub3JkZXItc20tMyB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDQ7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogMztcXG4gICAgICAgICAgICBvcmRlcjogMzsgfVxcbiAgLm9yZGVyLXNtLTQge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA1O1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDQ7XFxuICAgICAgICAgICAgb3JkZXI6IDQ7IH1cXG4gIC5vcmRlci1zbS01IHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNjtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiA1O1xcbiAgICAgICAgICAgIG9yZGVyOiA1OyB9XFxuICAub3JkZXItc20tNiB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDc7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogNjtcXG4gICAgICAgICAgICBvcmRlcjogNjsgfVxcbiAgLm9yZGVyLXNtLTcge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA4O1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDc7XFxuICAgICAgICAgICAgb3JkZXI6IDc7IH1cXG4gIC5vcmRlci1zbS04IHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogOTtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiA4O1xcbiAgICAgICAgICAgIG9yZGVyOiA4OyB9XFxuICAub3JkZXItc20tOSB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDEwO1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDk7XFxuICAgICAgICAgICAgb3JkZXI6IDk7IH1cXG4gIC5vcmRlci1zbS0xMCB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDExO1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDEwO1xcbiAgICAgICAgICAgIG9yZGVyOiAxMDsgfVxcbiAgLm9yZGVyLXNtLTExIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTI7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogMTE7XFxuICAgICAgICAgICAgb3JkZXI6IDExOyB9XFxuICAub3JkZXItc20tMTIge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMztcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxMjtcXG4gICAgICAgICAgICBvcmRlcjogMTI7IH1cXG4gIC5vZmZzZXQtc20tMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwOyB9XFxuICAub2Zmc2V0LXNtLTEge1xcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMyU7IH1cXG4gIC5vZmZzZXQtc20tMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NyU7IH1cXG4gIC5vZmZzZXQtc20tMyB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyNSU7IH1cXG4gIC5vZmZzZXQtc20tNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMyU7IH1cXG4gIC5vZmZzZXQtc20tNSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NyU7IH1cXG4gIC5vZmZzZXQtc20tNiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA1MCU7IH1cXG4gIC5vZmZzZXQtc20tNyB7XFxuICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMyU7IH1cXG4gIC5vZmZzZXQtc20tOCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NyU7IH1cXG4gIC5vZmZzZXQtc20tOSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA3NSU7IH1cXG4gIC5vZmZzZXQtc20tMTAge1xcbiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMlOyB9XFxuICAub2Zmc2V0LXNtLTExIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY3JTsgfSB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XFxuICAuY29sLW1kIHtcXG4gICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDA7XFxuICAgICAgICBmbGV4LWJhc2lzOiAwO1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7XFxuICAgICAgICAgICAgZmxleC1ncm93OiAxO1xcbiAgICBtYXgtd2lkdGg6IDEwMCU7IH1cXG4gIC5jb2wtbWQtYXV0byB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIGF1dG87XFxuICAgICAgICAgICAgZmxleDogMCAwIGF1dG87XFxuICAgIHdpZHRoOiBhdXRvO1xcbiAgICBtYXgtd2lkdGg6IG5vbmU7IH1cXG4gIC5jb2wtbWQtMSB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDguMzMzMzMlO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCA4LjMzMzMzJTtcXG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzJTsgfVxcbiAgLmNvbC1tZC0yIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgMTYuNjY2NjclO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCAxNi42NjY2NyU7XFxuICAgIG1heC13aWR0aDogMTYuNjY2NjclOyB9XFxuICAuY29sLW1kLTMge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCAyNSU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDI1JTtcXG4gICAgbWF4LXdpZHRoOiAyNSU7IH1cXG4gIC5jb2wtbWQtNCB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDMzLjMzMzMzJTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgMzMuMzMzMzMlO1xcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzJTsgfVxcbiAgLmNvbC1tZC01IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgNDEuNjY2NjclO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCA0MS42NjY2NyU7XFxuICAgIG1heC13aWR0aDogNDEuNjY2NjclOyB9XFxuICAuY29sLW1kLTYge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCA1MCU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDUwJTtcXG4gICAgbWF4LXdpZHRoOiA1MCU7IH1cXG4gIC5jb2wtbWQtNyB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDU4LjMzMzMzJTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgNTguMzMzMzMlO1xcbiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzJTsgfVxcbiAgLmNvbC1tZC04IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgNjYuNjY2NjclO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCA2Ni42NjY2NyU7XFxuICAgIG1heC13aWR0aDogNjYuNjY2NjclOyB9XFxuICAuY29sLW1kLTkge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCA3NSU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDc1JTtcXG4gICAgbWF4LXdpZHRoOiA3NSU7IH1cXG4gIC5jb2wtbWQtMTAge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCA4My4zMzMzMyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDgzLjMzMzMzJTtcXG4gICAgbWF4LXdpZHRoOiA4My4zMzMzMyU7IH1cXG4gIC5jb2wtbWQtMTEge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCA5MS42NjY2NyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDkxLjY2NjY3JTtcXG4gICAgbWF4LXdpZHRoOiA5MS42NjY2NyU7IH1cXG4gIC5jb2wtbWQtMTIge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCAxMDAlO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCAxMDAlO1xcbiAgICBtYXgtd2lkdGg6IDEwMCU7IH1cXG4gIC5vcmRlci1tZC1maXJzdCB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDA7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogLTE7XFxuICAgICAgICAgICAgb3JkZXI6IC0xOyB9XFxuICAub3JkZXItbWQtMSB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogMTtcXG4gICAgICAgICAgICBvcmRlcjogMTsgfVxcbiAgLm9yZGVyLW1kLTIge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAzO1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDI7XFxuICAgICAgICAgICAgb3JkZXI6IDI7IH1cXG4gIC5vcmRlci1tZC0zIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNDtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAzO1xcbiAgICAgICAgICAgIG9yZGVyOiAzOyB9XFxuICAub3JkZXItbWQtNCB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDU7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogNDtcXG4gICAgICAgICAgICBvcmRlcjogNDsgfVxcbiAgLm9yZGVyLW1kLTUge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA2O1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDU7XFxuICAgICAgICAgICAgb3JkZXI6IDU7IH1cXG4gIC5vcmRlci1tZC02IHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNztcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiA2O1xcbiAgICAgICAgICAgIG9yZGVyOiA2OyB9XFxuICAub3JkZXItbWQtNyB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDg7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogNztcXG4gICAgICAgICAgICBvcmRlcjogNzsgfVxcbiAgLm9yZGVyLW1kLTgge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA5O1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDg7XFxuICAgICAgICAgICAgb3JkZXI6IDg7IH1cXG4gIC5vcmRlci1tZC05IHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTA7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogOTtcXG4gICAgICAgICAgICBvcmRlcjogOTsgfVxcbiAgLm9yZGVyLW1kLTEwIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTE7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogMTA7XFxuICAgICAgICAgICAgb3JkZXI6IDEwOyB9XFxuICAub3JkZXItbWQtMTEge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMjtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxMTtcXG4gICAgICAgICAgICBvcmRlcjogMTE7IH1cXG4gIC5vcmRlci1tZC0xMiB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDEzO1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDEyO1xcbiAgICAgICAgICAgIG9yZGVyOiAxMjsgfVxcbiAgLm9mZnNldC1tZC0wIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gIC5vZmZzZXQtbWQtMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzJTsgfVxcbiAgLm9mZnNldC1tZC0yIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY3JTsgfVxcbiAgLm9mZnNldC1tZC0zIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDI1JTsgfVxcbiAgLm9mZnNldC1tZC00IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzJTsgfVxcbiAgLm9mZnNldC1tZC01IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY3JTsgfVxcbiAgLm9mZnNldC1tZC02IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDUwJTsgfVxcbiAgLm9mZnNldC1tZC03IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzJTsgfVxcbiAgLm9mZnNldC1tZC04IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY3JTsgfVxcbiAgLm9mZnNldC1tZC05IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDc1JTsgfVxcbiAgLm9mZnNldC1tZC0xMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMyU7IH1cXG4gIC5vZmZzZXQtbWQtMTEge1xcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjclOyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcXG4gIC5jb2wtbGcge1xcbiAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDtcXG4gICAgICAgIGZsZXgtYmFzaXM6IDA7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTtcXG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XFxuICAgIG1heC13aWR0aDogMTAwJTsgfVxcbiAgLmNvbC1sZy1hdXRvIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgYXV0bztcXG4gICAgICAgICAgICBmbGV4OiAwIDAgYXV0bztcXG4gICAgd2lkdGg6IGF1dG87XFxuICAgIG1heC13aWR0aDogbm9uZTsgfVxcbiAgLmNvbC1sZy0xIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgOC4zMzMzMyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDguMzMzMzMlO1xcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMlOyB9XFxuICAuY29sLWxnLTIge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCAxNi42NjY2NyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDE2LjY2NjY3JTtcXG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NyU7IH1cXG4gIC5jb2wtbGctMyB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDI1JTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgMjUlO1xcbiAgICBtYXgtd2lkdGg6IDI1JTsgfVxcbiAgLmNvbC1sZy00IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgMzMuMzMzMzMlO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCAzMy4zMzMzMyU7XFxuICAgIG1heC13aWR0aDogMzMuMzMzMzMlOyB9XFxuICAuY29sLWxnLTUge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCA0MS42NjY2NyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDQxLjY2NjY3JTtcXG4gICAgbWF4LXdpZHRoOiA0MS42NjY2NyU7IH1cXG4gIC5jb2wtbGctNiB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDUwJTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgNTAlO1xcbiAgICBtYXgtd2lkdGg6IDUwJTsgfVxcbiAgLmNvbC1sZy03IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgNTguMzMzMzMlO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCA1OC4zMzMzMyU7XFxuICAgIG1heC13aWR0aDogNTguMzMzMzMlOyB9XFxuICAuY29sLWxnLTgge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCA2Ni42NjY2NyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDY2LjY2NjY3JTtcXG4gICAgbWF4LXdpZHRoOiA2Ni42NjY2NyU7IH1cXG4gIC5jb2wtbGctOSB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDc1JTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgNzUlO1xcbiAgICBtYXgtd2lkdGg6IDc1JTsgfVxcbiAgLmNvbC1sZy0xMCB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDgzLjMzMzMzJTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgODMuMzMzMzMlO1xcbiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzJTsgfVxcbiAgLmNvbC1sZy0xMSB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDkxLjY2NjY3JTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgOTEuNjY2NjclO1xcbiAgICBtYXgtd2lkdGg6IDkxLjY2NjY3JTsgfVxcbiAgLmNvbC1sZy0xMiB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDEwMCU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDEwMCU7XFxuICAgIG1heC13aWR0aDogMTAwJTsgfVxcbiAgLm9yZGVyLWxnLWZpcnN0IHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMDtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAtMTtcXG4gICAgICAgICAgICBvcmRlcjogLTE7IH1cXG4gIC5vcmRlci1sZy0xIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxO1xcbiAgICAgICAgICAgIG9yZGVyOiAxOyB9XFxuICAub3JkZXItbGctMiB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDM7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogMjtcXG4gICAgICAgICAgICBvcmRlcjogMjsgfVxcbiAgLm9yZGVyLWxnLTMge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA0O1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDM7XFxuICAgICAgICAgICAgb3JkZXI6IDM7IH1cXG4gIC5vcmRlci1sZy00IHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNTtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiA0O1xcbiAgICAgICAgICAgIG9yZGVyOiA0OyB9XFxuICAub3JkZXItbGctNSB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDY7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogNTtcXG4gICAgICAgICAgICBvcmRlcjogNTsgfVxcbiAgLm9yZGVyLWxnLTYge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA3O1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDY7XFxuICAgICAgICAgICAgb3JkZXI6IDY7IH1cXG4gIC5vcmRlci1sZy03IHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogODtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiA3O1xcbiAgICAgICAgICAgIG9yZGVyOiA3OyB9XFxuICAub3JkZXItbGctOCB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDk7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogODtcXG4gICAgICAgICAgICBvcmRlcjogODsgfVxcbiAgLm9yZGVyLWxnLTkge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMDtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiA5O1xcbiAgICAgICAgICAgIG9yZGVyOiA5OyB9XFxuICAub3JkZXItbGctMTAge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMTtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxMDtcXG4gICAgICAgICAgICBvcmRlcjogMTA7IH1cXG4gIC5vcmRlci1sZy0xMSB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDEyO1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDExO1xcbiAgICAgICAgICAgIG9yZGVyOiAxMTsgfVxcbiAgLm9yZGVyLWxnLTEyIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTM7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogMTI7XFxuICAgICAgICAgICAgb3JkZXI6IDEyOyB9XFxuICAub2Zmc2V0LWxnLTAge1xcbiAgICBtYXJnaW4tbGVmdDogMDsgfVxcbiAgLm9mZnNldC1sZy0xIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMlOyB9XFxuICAub2Zmc2V0LWxnLTIge1xcbiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjclOyB9XFxuICAub2Zmc2V0LWxnLTMge1xcbiAgICBtYXJnaW4tbGVmdDogMjUlOyB9XFxuICAub2Zmc2V0LWxnLTQge1xcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMlOyB9XFxuICAub2Zmc2V0LWxnLTUge1xcbiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjclOyB9XFxuICAub2Zmc2V0LWxnLTYge1xcbiAgICBtYXJnaW4tbGVmdDogNTAlOyB9XFxuICAub2Zmc2V0LWxnLTcge1xcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMlOyB9XFxuICAub2Zmc2V0LWxnLTgge1xcbiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjclOyB9XFxuICAub2Zmc2V0LWxnLTkge1xcbiAgICBtYXJnaW4tbGVmdDogNzUlOyB9XFxuICAub2Zmc2V0LWxnLTEwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzJTsgfVxcbiAgLm9mZnNldC1sZy0xMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NyU7IH0gfVxcbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcXG4gIC5jb2wteGwge1xcbiAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDtcXG4gICAgICAgIGZsZXgtYmFzaXM6IDA7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTtcXG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XFxuICAgIG1heC13aWR0aDogMTAwJTsgfVxcbiAgLmNvbC14bC1hdXRvIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgYXV0bztcXG4gICAgICAgICAgICBmbGV4OiAwIDAgYXV0bztcXG4gICAgd2lkdGg6IGF1dG87XFxuICAgIG1heC13aWR0aDogbm9uZTsgfVxcbiAgLmNvbC14bC0xIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgOC4zMzMzMyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDguMzMzMzMlO1xcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMlOyB9XFxuICAuY29sLXhsLTIge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCAxNi42NjY2NyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDE2LjY2NjY3JTtcXG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NyU7IH1cXG4gIC5jb2wteGwtMyB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDI1JTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgMjUlO1xcbiAgICBtYXgtd2lkdGg6IDI1JTsgfVxcbiAgLmNvbC14bC00IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgMzMuMzMzMzMlO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCAzMy4zMzMzMyU7XFxuICAgIG1heC13aWR0aDogMzMuMzMzMzMlOyB9XFxuICAuY29sLXhsLTUge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCA0MS42NjY2NyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDQxLjY2NjY3JTtcXG4gICAgbWF4LXdpZHRoOiA0MS42NjY2NyU7IH1cXG4gIC5jb2wteGwtNiB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDUwJTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgNTAlO1xcbiAgICBtYXgtd2lkdGg6IDUwJTsgfVxcbiAgLmNvbC14bC03IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDAgNTguMzMzMzMlO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMCA1OC4zMzMzMyU7XFxuICAgIG1heC13aWR0aDogNTguMzMzMzMlOyB9XFxuICAuY29sLXhsLTgge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMCA2Ni42NjY2NyU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDY2LjY2NjY3JTtcXG4gICAgbWF4LXdpZHRoOiA2Ni42NjY2NyU7IH1cXG4gIC5jb2wteGwtOSB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDc1JTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgNzUlO1xcbiAgICBtYXgtd2lkdGg6IDc1JTsgfVxcbiAgLmNvbC14bC0xMCB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDgzLjMzMzMzJTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgODMuMzMzMzMlO1xcbiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzJTsgfVxcbiAgLmNvbC14bC0xMSB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDkxLjY2NjY3JTtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgOTEuNjY2NjclO1xcbiAgICBtYXgtd2lkdGg6IDkxLjY2NjY3JTsgfVxcbiAgLmNvbC14bC0xMiB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAtbXMtZmxleDogMCAwIDEwMCU7XFxuICAgICAgICAgICAgZmxleDogMCAwIDEwMCU7XFxuICAgIG1heC13aWR0aDogMTAwJTsgfVxcbiAgLm9yZGVyLXhsLWZpcnN0IHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMDtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAtMTtcXG4gICAgICAgICAgICBvcmRlcjogLTE7IH1cXG4gIC5vcmRlci14bC0xIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxO1xcbiAgICAgICAgICAgIG9yZGVyOiAxOyB9XFxuICAub3JkZXIteGwtMiB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDM7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogMjtcXG4gICAgICAgICAgICBvcmRlcjogMjsgfVxcbiAgLm9yZGVyLXhsLTMge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA0O1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDM7XFxuICAgICAgICAgICAgb3JkZXI6IDM7IH1cXG4gIC5vcmRlci14bC00IHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogNTtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiA0O1xcbiAgICAgICAgICAgIG9yZGVyOiA0OyB9XFxuICAub3JkZXIteGwtNSB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDY7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogNTtcXG4gICAgICAgICAgICBvcmRlcjogNTsgfVxcbiAgLm9yZGVyLXhsLTYge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiA3O1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDY7XFxuICAgICAgICAgICAgb3JkZXI6IDY7IH1cXG4gIC5vcmRlci14bC03IHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogODtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiA3O1xcbiAgICAgICAgICAgIG9yZGVyOiA3OyB9XFxuICAub3JkZXIteGwtOCB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDk7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogODtcXG4gICAgICAgICAgICBvcmRlcjogODsgfVxcbiAgLm9yZGVyLXhsLTkge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMDtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiA5O1xcbiAgICAgICAgICAgIG9yZGVyOiA5OyB9XFxuICAub3JkZXIteGwtMTAge1xcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxMTtcXG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxMDtcXG4gICAgICAgICAgICBvcmRlcjogMTA7IH1cXG4gIC5vcmRlci14bC0xMSB7XFxuICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDEyO1xcbiAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDExO1xcbiAgICAgICAgICAgIG9yZGVyOiAxMTsgfVxcbiAgLm9yZGVyLXhsLTEyIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMTM7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogMTI7XFxuICAgICAgICAgICAgb3JkZXI6IDEyOyB9XFxuICAub2Zmc2V0LXhsLTAge1xcbiAgICBtYXJnaW4tbGVmdDogMDsgfVxcbiAgLm9mZnNldC14bC0xIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMlOyB9XFxuICAub2Zmc2V0LXhsLTIge1xcbiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjclOyB9XFxuICAub2Zmc2V0LXhsLTMge1xcbiAgICBtYXJnaW4tbGVmdDogMjUlOyB9XFxuICAub2Zmc2V0LXhsLTQge1xcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMlOyB9XFxuICAub2Zmc2V0LXhsLTUge1xcbiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjclOyB9XFxuICAub2Zmc2V0LXhsLTYge1xcbiAgICBtYXJnaW4tbGVmdDogNTAlOyB9XFxuICAub2Zmc2V0LXhsLTcge1xcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMlOyB9XFxuICAub2Zmc2V0LXhsLTgge1xcbiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjclOyB9XFxuICAub2Zmc2V0LXhsLTkge1xcbiAgICBtYXJnaW4tbGVmdDogNzUlOyB9XFxuICAub2Zmc2V0LXhsLTEwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzJTsgfVxcbiAgLm9mZnNldC14bC0xMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NyU7IH0gfVxcbi50YWJsZSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxcbi50YWJsZSB0aCwgLnRhYmxlIHRkIHtcXG4gICAgcGFkZGluZzogMC43NXJlbTtcXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZWUyZTY7IH1cXG4udGFibGUgdGhlYWQgdGgge1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2RlZTJlNjsgfVxcbi50YWJsZSB0Ym9keSArIHRib2R5IHtcXG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNkZWUyZTY7IH1cXG4udGFibGUgLnRhYmxlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxcbi50YWJsZS1zbSB0aCwgLnRhYmxlLXNtIHRkIHtcXG4gIHBhZGRpbmc6IDAuM3JlbTsgfVxcbi50YWJsZS1ib3JkZXJlZCB7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2OyB9XFxuLnRhYmxlLWJvcmRlcmVkIHRoLCAudGFibGUtYm9yZGVyZWQgdGQge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2OyB9XFxuLnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRoLCAudGFibGUtYm9yZGVyZWQgdGhlYWQgdGQge1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7IH1cXG4udGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7IH1cXG4udGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA3NSk7IH1cXG4udGFibGUtcHJpbWFyeSwgLnRhYmxlLXByaW1hcnkgPiB0aCwgLnRhYmxlLXByaW1hcnkgPiB0ZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhkYWZmOyB9XFxuLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5ZmNkZmY7IH1cXG4udGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyID4gdGgge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZjZGZmOyB9XFxuLnRhYmxlLXNlY29uZGFyeSwgLnRhYmxlLXNlY29uZGFyeSA+IHRoLCAudGFibGUtc2Vjb25kYXJ5ID4gdGQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZGZlMjsgfVxcbi50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjZmQyZDY7IH1cXG4udGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRoIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2NmZDJkNjsgfVxcbi50YWJsZS1zdWNjZXNzLCAudGFibGUtc3VjY2VzcyA+IHRoLCAudGFibGUtc3VjY2VzcyA+IHRkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjM2U2Y2I7IH1cXG4udGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsgfVxcbi50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0aCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNiMWRmYmI7IH1cXG4udGFibGUtaW5mbywgLnRhYmxlLWluZm8gPiB0aCwgLnRhYmxlLWluZm8gPiB0ZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmVlNWViOyB9XFxuLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7IH1cXG4udGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyID4gdGgge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1OyB9XFxuLnRhYmxlLXdhcm5pbmcsIC50YWJsZS13YXJuaW5nID4gdGgsIC50YWJsZS13YXJuaW5nID4gdGQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsgfVxcbi50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlOGExOyB9XFxuLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlciA+IHRoIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZThhMTsgfVxcbi50YWJsZS1kYW5nZXIsIC50YWJsZS1kYW5nZXIgPiB0aCwgLnRhYmxlLWRhbmdlciA+IHRkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWM2Y2I7IH1cXG4udGFibGUtaG92ZXIgLnRhYmxlLWRhbmdlcjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFiMGI3OyB9XFxuLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0aCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMWIwYjc7IH1cXG4udGFibGUtbGlnaHQsIC50YWJsZS1saWdodCA+IHRoLCAudGFibGUtbGlnaHQgPiB0ZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmZGZlOyB9XFxuLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2Y2OyB9XFxuLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodDpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGgge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2Y2OyB9XFxuLnRhYmxlLWRhcmssIC50YWJsZS1kYXJrID4gdGgsIC50YWJsZS1kYXJrID4gdGQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsgfVxcbi50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJlOyB9XFxuLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3ZlciA+IHRoIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZTsgfVxcbi50YWJsZS1hY3RpdmUsIC50YWJsZS1hY3RpdmUgPiB0aCwgLnRhYmxlLWFjdGl2ZSA+IHRkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNzUpOyB9XFxuLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA3NSk7IH1cXG4udGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRoIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA3NSk7IH1cXG4udGFibGUgLnRoZWFkLWRhcmsgdGgge1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5O1xcbiAgYm9yZGVyLWNvbG9yOiAjMzIzODNlOyB9XFxuLnRhYmxlIC50aGVhZC1saWdodCB0aCB7XFxuICBjb2xvcjogIzQ5NTA1NztcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XFxuICBib3JkZXItY29sb3I6ICNkZWUyZTY7IH1cXG4udGFibGUtZGFyayB7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTI1Mjk7IH1cXG4udGFibGUtZGFyayB0aCwgLnRhYmxlLWRhcmsgdGQsIC50YWJsZS1kYXJrIHRoZWFkIHRoIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMzIzODNlOyB9XFxuLnRhYmxlLWRhcmsudGFibGUtYm9yZGVyZWQge1xcbiAgICBib3JkZXI6IDA7IH1cXG4udGFibGUtZGFyay50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOyB9XFxuLnRhYmxlLWRhcmsudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDc1KTsgfVxcbkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOTlweCkge1xcbiAgLnRhYmxlLXJlc3BvbnNpdmUtc20ge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIG92ZXJmbG93LXg6IGF1dG87XFxuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcXG4gICAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7IH1cXG4gICAgLnRhYmxlLXJlc3BvbnNpdmUtc20gPiAudGFibGUtYm9yZGVyZWQge1xcbiAgICAgIGJvcmRlcjogMDsgfSB9XFxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OXB4KSB7XFxuICAudGFibGUtcmVzcG9uc2l2ZS1tZCB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgb3ZlcmZsb3cteDogYXV0bztcXG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xcbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsgfVxcbiAgICAudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7XFxuICAgICAgYm9yZGVyOiAwOyB9IH1cXG5AbWVkaWEgKG1heC13aWR0aDogOTkxLjk5cHgpIHtcXG4gIC50YWJsZS1yZXNwb25zaXZlLWxnIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XFxuICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOyB9XFxuICAgIC50YWJsZS1yZXNwb25zaXZlLWxnID4gLnRhYmxlLWJvcmRlcmVkIHtcXG4gICAgICBib3JkZXI6IDA7IH0gfVxcbkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk5cHgpIHtcXG4gIC50YWJsZS1yZXNwb25zaXZlLXhsIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XFxuICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOyB9XFxuICAgIC50YWJsZS1yZXNwb25zaXZlLXhsID4gLnRhYmxlLWJvcmRlcmVkIHtcXG4gICAgICBib3JkZXI6IDA7IH0gfVxcbi50YWJsZS1yZXNwb25zaXZlIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBvdmVyZmxvdy14OiBhdXRvO1xcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7IH1cXG4udGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCB7XFxuICAgIGJvcmRlcjogMDsgfVxcbi5mb3JtLWNvbnRyb2wge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG4gIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07XFxuICBmb250LXNpemU6IDFyZW07XFxuICBsaW5lLWhlaWdodDogMS41O1xcbiAgY29sb3I6ICM0OTUwNTc7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0LCAtd2Via2l0LWJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7IH1cXG4uZm9ybS1jb250cm9sOjotbXMtZXhwYW5kIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIGJvcmRlcjogMDsgfVxcbi5mb3JtLWNvbnRyb2w6Zm9jdXMge1xcbiAgICBjb2xvcjogIzQ5NTA1NztcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gICAgYm9yZGVyLWNvbG9yOiAjODBiZGZmO1xcbiAgICBvdXRsaW5lOiAwO1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7IH1cXG4uZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICM4NjhlOTY7XFxuICAgIG9wYWNpdHk6IDE7IH1cXG4uZm9ybS1jb250cm9sOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjODY4ZTk2O1xcbiAgICBvcGFjaXR5OiAxOyB9XFxuLmZvcm0tY29udHJvbDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgY29sb3I6ICM4NjhlOTY7XFxuICAgIG9wYWNpdHk6IDE7IH1cXG4uZm9ybS1jb250cm9sOjpwbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiAjODY4ZTk2O1xcbiAgICBvcGFjaXR5OiAxOyB9XFxuLmZvcm0tY29udHJvbDpkaXNhYmxlZCwgLmZvcm0tY29udHJvbFtyZWFkb25seV0ge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xcbiAgICBvcGFjaXR5OiAxOyB9XFxuc2VsZWN0LmZvcm0tY29udHJvbDpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSkge1xcbiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOyB9XFxuc2VsZWN0LmZvcm0tY29udHJvbDpmb2N1czo6LW1zLXZhbHVlIHtcXG4gIGNvbG9yOiAjNDk1MDU3O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxcbi5mb3JtLWNvbnRyb2wtZmlsZSwgLmZvcm0tY29udHJvbC1yYW5nZSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiAxMDAlOyB9XFxuLmNvbC1mb3JtLWxhYmVsIHtcXG4gIHBhZGRpbmctdG9wOiBjYWxjKDAuMzc1cmVtICsgMXB4KTtcXG4gIHBhZGRpbmctYm90dG9tOiBjYWxjKDAuMzc1cmVtICsgMXB4KTtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxuICBmb250LXNpemU6IGluaGVyaXQ7XFxuICBsaW5lLWhlaWdodDogMS41OyB9XFxuLmNvbC1mb3JtLWxhYmVsLWxnIHtcXG4gIHBhZGRpbmctdG9wOiBjYWxjKDAuNXJlbSArIDFweCk7XFxuICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjVyZW0gKyAxcHgpO1xcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTsgfVxcbi5jb2wtZm9ybS1sYWJlbC1zbSB7XFxuICBwYWRkaW5nLXRvcDogY2FsYygwLjI1cmVtICsgMXB4KTtcXG4gIHBhZGRpbmctYm90dG9tOiBjYWxjKDAuMjVyZW0gKyAxcHgpO1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7IH1cXG4uZm9ybS1jb250cm9sLXBsYWludGV4dCB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgcGFkZGluZy10b3A6IDAuMzc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItd2lkdGg6IDFweCAwOyB9XFxuLmZvcm0tY29udHJvbC1wbGFpbnRleHQuZm9ybS1jb250cm9sLXNtLCAuaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wsIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQuYnRuLCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQuYnRuLCAuZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtbGcsIC5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dC5idG4sIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dC5idG4ge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDA7IH1cXG4uZm9ybS1jb250cm9sLXNtLCAuaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4ge1xcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsgfVxcbnNlbGVjdC5mb3JtLWNvbnRyb2wtc206bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLCAuaW5wdXQtZ3JvdXAtc20gPiBzZWxlY3QuZm9ybS1jb250cm9sOm5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKSwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiBzZWxlY3QuaW5wdXQtZ3JvdXAtdGV4dDpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSksIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiBzZWxlY3QuaW5wdXQtZ3JvdXAtdGV4dDpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSksIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gc2VsZWN0LmJ0bjpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSksIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiBzZWxlY3QuYnRuOm5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKSB7XFxuICBoZWlnaHQ6IGNhbGMoMS44MTI1cmVtICsgMnB4KTsgfVxcbi5mb3JtLWNvbnRyb2wtbGcsIC5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLWNvbnRyb2wsIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmJ0biB7XFxuICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcXG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICBib3JkZXItcmFkaXVzOiAwLjNyZW07IH1cXG5zZWxlY3QuZm9ybS1jb250cm9sLWxnOm5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKSwgLmlucHV0LWdyb3VwLWxnID4gc2VsZWN0LmZvcm0tY29udHJvbDpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSksIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gc2VsZWN0LmlucHV0LWdyb3VwLXRleHQ6bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gc2VsZWN0LmlucHV0LWdyb3VwLXRleHQ6bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IHNlbGVjdC5idG46bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gc2VsZWN0LmJ0bjpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSkge1xcbiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTsgfVxcbi5mb3JtLWdyb3VwIHtcXG4gIG1hcmdpbi1ib3R0b206IDFyZW07IH1cXG4uZm9ybS10ZXh0IHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTsgfVxcbi5mb3JtLXJvdyB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC1tcy1mbGV4LXdyYXA6IHdyYXA7XFxuICAgICAgZmxleC13cmFwOiB3cmFwO1xcbiAgbWFyZ2luLXJpZ2h0OiAtNXB4O1xcbiAgbWFyZ2luLWxlZnQ6IC01cHg7IH1cXG4uZm9ybS1yb3cgPiAuY29sLCAuZm9ybS1yb3cgPiBbY2xhc3MqPVxcXCJjb2wtXFxcIl0ge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XFxuICAgIHBhZGRpbmctbGVmdDogNXB4OyB9XFxuLmZvcm0tY2hlY2sge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IH1cXG4uZm9ybS1jaGVjay1pbnB1dCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBtYXJnaW4tdG9wOiAwLjNyZW07XFxuICBtYXJnaW4tbGVmdDogLTEuMjVyZW07IH1cXG4uZm9ybS1jaGVjay1pbnB1dDpkaXNhYmxlZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHtcXG4gICAgY29sb3I6ICM4NjhlOTY7IH1cXG4uZm9ybS1jaGVjay1sYWJlbCB7XFxuICBtYXJnaW4tYm90dG9tOiAwOyB9XFxuLmZvcm0tY2hlY2staW5saW5lIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcXG4gIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgcGFkZGluZy1sZWZ0OiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtOyB9XFxuLmZvcm0tY2hlY2staW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHtcXG4gICAgcG9zaXRpb246IHN0YXRpYztcXG4gICAgbWFyZ2luLXRvcDogMDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjMxMjVyZW07XFxuICAgIG1hcmdpbi1sZWZ0OiAwOyB9XFxuLnZhbGlkLWZlZWRiYWNrIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbi10b3A6IDAuMjVyZW07XFxuICBmb250LXNpemU6IDgwJTtcXG4gIGNvbG9yOiAjMjhhNzQ1OyB9XFxuLnZhbGlkLXRvb2x0aXAge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAxMDAlO1xcbiAgei1pbmRleDogNTtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB3aWR0aDogMjUwcHg7XFxuICBwYWRkaW5nOiAuNXJlbTtcXG4gIG1hcmdpbi10b3A6IC4xcmVtO1xcbiAgZm9udC1zaXplOiAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDAsIDE2NywgNjksIDAuOCk7XFxuICBib3JkZXItcmFkaXVzOiAuMnJlbTsgfVxcbi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQsIC53YXMtdmFsaWRhdGVkXFxuLmN1c3RvbS1zZWxlY3Q6dmFsaWQsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIHtcXG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTsgfVxcbi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQ6Zm9jdXMsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQ6Zm9jdXMsIC53YXMtdmFsaWRhdGVkXFxuICAuY3VzdG9tLXNlbGVjdDp2YWxpZDpmb2N1cywgLmN1c3RvbS1zZWxlY3QuaXMtdmFsaWQ6Zm9jdXMge1xcbiAgICBib3JkZXItY29sb3I6ICMyOGE3NDU7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjI1KTsgfVxcbi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwLCAud2FzLXZhbGlkYXRlZFxcbiAgLmN1c3RvbS1zZWxlY3Q6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkXFxuICAuY3VzdG9tLXNlbGVjdDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLmN1c3RvbS1zZWxlY3QuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbCB7XFxuICBjb2xvcjogIzI4YTc0NTsgfVxcbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcXG4gIGNvbG9yOiAjMjhhNzQ1OyB9XFxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzcxZGQ4YTsgfVxcbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAge1xcbiAgZGlzcGxheTogYmxvY2s7IH1cXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzNGNlNTc7IH1cXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpO1xcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpOyB9XFxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwge1xcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1OyB9XFxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YmVmb3JlIHtcXG4gICAgYm9yZGVyLWNvbG9yOiBpbmhlcml0OyB9XFxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmN1c3RvbS1maWxlLWlucHV0LmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7XFxuICBkaXNwbGF5OiBibG9jazsgfVxcbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCwgLmN1c3RvbS1maWxlLWlucHV0LmlzLXZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsIHtcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpO1xcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgMC4yNSk7IH1cXG4uaW52YWxpZC1mZWVkYmFjayB7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xcbiAgZm9udC1zaXplOiA4MCU7XFxuICBjb2xvcjogI2RjMzU0NTsgfVxcbi5pbnZhbGlkLXRvb2x0aXAge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAxMDAlO1xcbiAgei1pbmRleDogNTtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB3aWR0aDogMjUwcHg7XFxuICBwYWRkaW5nOiAuNXJlbTtcXG4gIG1hcmdpbi10b3A6IC4xcmVtO1xcbiAgZm9udC1zaXplOiAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjIwLCA1MywgNjksIDAuOCk7XFxuICBib3JkZXItcmFkaXVzOiAuMnJlbTsgfVxcbi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCwgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkLCAud2FzLXZhbGlkYXRlZFxcbi5jdXN0b20tc2VsZWN0OmludmFsaWQsIC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQge1xcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1OyB9XFxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkOmZvY3VzLCAuZm9ybS1jb250cm9sLmlzLWludmFsaWQ6Zm9jdXMsIC53YXMtdmFsaWRhdGVkXFxuICAuY3VzdG9tLXNlbGVjdDppbnZhbGlkOmZvY3VzLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkOmZvY3VzIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjI1KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC4yNSk7IH1cXG4ud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC53YXMtdmFsaWRhdGVkXFxuICAuY3VzdG9tLXNlbGVjdDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkXFxuICAuY3VzdG9tLXNlbGVjdDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsLCAuZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwge1xcbiAgY29sb3I6ICNkYzM1NDU7IH1cXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xcbiAgY29sb3I6ICNkYzM1NDU7IH1cXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VmYTJhOTsgfVxcbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHtcXG4gIGRpc3BsYXk6IGJsb2NrOyB9XFxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U0NjA2ZDsgfVxcbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuMjUpO1xcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuMjUpOyB9XFxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsIHtcXG4gIGJvcmRlci1jb2xvcjogI2RjMzU0NTsgfVxcbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjpiZWZvcmUge1xcbiAgICBib3JkZXItY29sb3I6IGluaGVyaXQ7IH1cXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7XFxuICBkaXNwbGF5OiBibG9jazsgfVxcbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjI1KTtcXG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuMjUpOyB9XFxuLmZvcm0taW5saW5lIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7XFxuICAgICAgICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4uZm9ybS1pbmxpbmUgLmZvcm0tY2hlY2sge1xcbiAgICB3aWR0aDogMTAwJTsgfVxcbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xcbiAgICAuZm9ybS1pbmxpbmUgbGFiZWwge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XFxuICAgIC5mb3JtLWlubGluZSAuZm9ybS1ncm91cCB7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgICAtbXMtZmxleDogMCAwIGF1dG87XFxuICAgICAgICAgICAgICBmbGV4OiAwIDAgYXV0bztcXG4gICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XFxuICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgICAgIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwO1xcbiAgICAgICAgICAgICAgZmxleC1mbG93OiByb3cgd3JhcDtcXG4gICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XFxuICAgIC5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sIHtcXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgICAgd2lkdGg6IGF1dG87XFxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxcbiAgICAuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbC1wbGFpbnRleHQge1xcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxcbiAgICAuZm9ybS1pbmxpbmUgLmlucHV0LWdyb3VwIHtcXG4gICAgICB3aWR0aDogYXV0bzsgfVxcbiAgICAuZm9ybS1pbmxpbmUgLmZvcm0tY2hlY2sge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICB3aWR0aDogYXV0bztcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7IH1cXG4gICAgLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgbWFyZ2luLXRvcDogMDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gICAgLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbCB7XFxuICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxcbiAgICAuZm9ybS1pbmxpbmUgLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9IH1cXG4uYnRuIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07XFxuICBmb250LXNpemU6IDFyZW07XFxuICBsaW5lLWhlaWdodDogMS41O1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcXG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsgfVxcbi5idG46Zm9jdXMsIC5idG46aG92ZXIge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cXG4uYnRuOmZvY3VzLCAuYnRuLmZvY3VzIHtcXG4gICAgb3V0bGluZTogMDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOyB9XFxuLmJ0bi5kaXNhYmxlZCwgLmJ0bjpkaXNhYmxlZCB7XFxuICAgIG9wYWNpdHk6IDAuNjU7IH1cXG4uYnRuOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKSB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbi5idG46bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bjpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCkuYWN0aXZlIHtcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgfVxcbmEuYnRuLmRpc2FibGVkLCBmaWVsZHNldFtkaXNhYmxlZF0gYS5idG4ge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cXG4uYnRuLXByaW1hcnkge1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xcbiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOyB9XFxuLmJ0bi1wcmltYXJ5OmhvdmVyIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDY5ZDk7XFxuICAgIGJvcmRlci1jb2xvcjogIzAwNjJjYzsgfVxcbi5idG4tcHJpbWFyeTpmb2N1cywgLmJ0bi1wcmltYXJ5LmZvY3VzIHtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfVxcbi5idG4tcHJpbWFyeS5kaXNhYmxlZCwgLmJ0bi1wcmltYXJ5OmRpc2FibGVkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOyB9XFxuLmJ0bi1wcmltYXJ5Om5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tcHJpbWFyeTpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tcHJpbWFyeS5kcm9wZG93bi10b2dnbGUge1xcbiAgICBjb2xvcjogI2ZmZjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYztcXG4gICAgYm9yZGVyLWNvbG9yOiAjMDA1Y2JmOyB9XFxuLmJ0bi1wcmltYXJ5Om5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tcHJpbWFyeTpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xcbiAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7XFxuICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfVxcbi5idG4tc2Vjb25kYXJ5IHtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg2OGU5NjtcXG4gIGJvcmRlci1jb2xvcjogIzg2OGU5NjsgfVxcbi5idG4tc2Vjb25kYXJ5OmhvdmVyIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM3MjdiODQ7XFxuICAgIGJvcmRlci1jb2xvcjogIzZjNzU3ZDsgfVxcbi5idG4tc2Vjb25kYXJ5OmZvY3VzLCAuYnRuLXNlY29uZGFyeS5mb2N1cyB7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTM0LCAxNDIsIDE1MCwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgxMzQsIDE0MiwgMTUwLCAwLjUpOyB9XFxuLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQsIC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzg2OGU5NjtcXG4gICAgYm9yZGVyLWNvbG9yOiAjODY4ZTk2OyB9XFxuLmJ0bi1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGUge1xcbiAgICBjb2xvcjogI2ZmZjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjNjY2ZTc2OyB9XFxuLmJ0bi1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xcbiAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTM0LCAxNDIsIDE1MCwgMC41KTtcXG4gICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEzNCwgMTQyLCAxNTAsIDAuNSk7IH1cXG4uYnRuLXN1Y2Nlc3Mge1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1OyB9XFxuLmJ0bi1zdWNjZXNzOmhvdmVyIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTg4Mzg7XFxuICAgIGJvcmRlci1jb2xvcjogIzFlN2UzNDsgfVxcbi5idG4tc3VjY2Vzczpmb2N1cywgLmJ0bi1zdWNjZXNzLmZvY3VzIHtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgMC41KTsgfVxcbi5idG4tc3VjY2Vzcy5kaXNhYmxlZCwgLmJ0bi1zdWNjZXNzOmRpc2FibGVkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1OyB9XFxuLmJ0bi1zdWNjZXNzOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tc3VjY2Vzczpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUge1xcbiAgICBjb2xvcjogI2ZmZjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFlN2UzNDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMWM3NDMwOyB9XFxuLmJ0bi1zdWNjZXNzOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tc3VjY2Vzczpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xcbiAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuNSk7XFxuICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgMC41KTsgfVxcbi5idG4taW5mbyB7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7XFxuICBib3JkZXItY29sb3I6ICMxN2EyYjg7IH1cXG4uYnRuLWluZm86aG92ZXIge1xcbiAgICBjb2xvcjogI2ZmZjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzEzODQ5NjtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMTE3YThiOyB9XFxuLmJ0bi1pbmZvOmZvY3VzLCAuYnRuLWluZm8uZm9jdXMge1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7IH1cXG4uYnRuLWluZm8uZGlzYWJsZWQsIC5idG4taW5mbzpkaXNhYmxlZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7XFxuICAgIGJvcmRlci1jb2xvcjogIzE3YTJiODsgfVxcbi5idG4taW5mbzpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWluZm86bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMxMTdhOGI7XFxuICAgIGJvcmRlci1jb2xvcjogIzEwNzA3ZjsgfVxcbi5idG4taW5mbzpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWluZm86bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcXG4gICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTtcXG4gICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTsgfVxcbi5idG4td2FybmluZyB7XFxuICBjb2xvcjogIzIxMjUyOTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7XFxuICBib3JkZXItY29sb3I6ICNmZmMxMDc7IH1cXG4uYnRuLXdhcm5pbmc6aG92ZXIge1xcbiAgICBjb2xvcjogIzIxMjUyOTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UwYTgwMDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZDM5ZTAwOyB9XFxuLmJ0bi13YXJuaW5nOmZvY3VzLCAuYnRuLXdhcm5pbmcuZm9jdXMge1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI1NSwgMTkzLCA3LCAwLjUpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI1NSwgMTkzLCA3LCAwLjUpOyB9XFxuLmJ0bi13YXJuaW5nLmRpc2FibGVkLCAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3O1xcbiAgICBib3JkZXItY29sb3I6ICNmZmMxMDc7IH1cXG4uYnRuLXdhcm5pbmc6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi13YXJuaW5nOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZSB7XFxuICAgIGNvbG9yOiAjMjEyNTI5O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwO1xcbiAgICBib3JkZXItY29sb3I6ICNjNjk1MDA7IH1cXG4uYnRuLXdhcm5pbmc6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi13YXJuaW5nOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTtcXG4gICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI1NSwgMTkzLCA3LCAwLjUpOyB9XFxuLmJ0bi1kYW5nZXIge1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1OyB9XFxuLmJ0bi1kYW5nZXI6aG92ZXIge1xcbiAgICBjb2xvcjogI2ZmZjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2M4MjMzMztcXG4gICAgYm9yZGVyLWNvbG9yOiAjYmQyMTMwOyB9XFxuLmJ0bi1kYW5nZXI6Zm9jdXMsIC5idG4tZGFuZ2VyLmZvY3VzIHtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsgfVxcbi5idG4tZGFuZ2VyLmRpc2FibGVkLCAuYnRuLWRhbmdlcjpkaXNhYmxlZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7XFxuICAgIGJvcmRlci1jb2xvcjogI2RjMzU0NTsgfVxcbi5idG4tZGFuZ2VyOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tZGFuZ2VyOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNiZDIxMzA7XFxuICAgIGJvcmRlci1jb2xvcjogI2IyMWYyZDsgfVxcbi5idG4tZGFuZ2VyOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tZGFuZ2VyOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcXG4gICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjUpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuNSk7IH1cXG4uYnRuLWxpZ2h0IHtcXG4gIGNvbG9yOiAjMjEyNTI5O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcXG4gIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsgfVxcbi5idG4tbGlnaHQ6aG92ZXIge1xcbiAgICBjb2xvcjogIzIxMjUyOTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTZlYTtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZGFlMGU1OyB9XFxuLmJ0bi1saWdodDpmb2N1cywgLmJ0bi1saWdodC5mb2N1cyB7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOyB9XFxuLmJ0bi1saWdodC5kaXNhYmxlZCwgLmJ0bi1saWdodDpkaXNhYmxlZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XFxuICAgIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsgfVxcbi5idG4tbGlnaHQ6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1saWdodDpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHtcXG4gICAgY29sb3I6ICMyMTI1Mjk7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTU7XFxuICAgIGJvcmRlci1jb2xvcjogI2QzZDlkZjsgfVxcbi5idG4tbGlnaHQ6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1saWdodDpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcXG4gICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI0OCwgMjQ5LCAyNTAsIDAuNSk7XFxuICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOyB9XFxuLmJ0bi1kYXJrIHtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDtcXG4gIGJvcmRlci1jb2xvcjogIzM0M2E0MDsgfVxcbi5idG4tZGFyazpob3ZlciB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjMyNzJiO1xcbiAgICBib3JkZXItY29sb3I6ICMxZDIxMjQ7IH1cXG4uYnRuLWRhcms6Zm9jdXMsIC5idG4tZGFyay5mb2N1cyB7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAwLjUpOyB9XFxuLmJ0bi1kYXJrLmRpc2FibGVkLCAuYnRuLWRhcms6ZGlzYWJsZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xcbiAgICBib3JkZXItY29sb3I6ICMzNDNhNDA7IH1cXG4uYnRuLWRhcms6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1kYXJrOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1kYXJrLmRyb3Bkb3duLXRvZ2dsZSB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0O1xcbiAgICBib3JkZXItY29sb3I6ICMxNzFhMWQ7IH1cXG4uYnRuLWRhcms6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1kYXJrOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1kYXJrLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAwLjUpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTsgfVxcbi5idG4tb3V0bGluZS1wcmltYXJ5IHtcXG4gIGNvbG9yOiAjMDA3YmZmO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xcbiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOyB9XFxuLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIge1xcbiAgICBjb2xvcjogI2ZmZjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOyB9XFxuLmJ0bi1vdXRsaW5lLXByaW1hcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5LmZvY3VzIHtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfVxcbi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCB7XFxuICAgIGNvbG9yOiAjMDA3YmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxcbi5idG4tb3V0bGluZS1wcmltYXJ5Om5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xlIHtcXG4gICAgY29sb3I6ICMyMTI1Mjk7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XFxuICAgIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfVxcbi5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xcbiAgY29sb3I6ICM4NjhlOTY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XFxuICBib3JkZXItY29sb3I6ICM4NjhlOTY7IH1cXG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmhvdmVyIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM4NjhlOTY7XFxuICAgIGJvcmRlci1jb2xvcjogIzg2OGU5NjsgfVxcbi5idG4tb3V0bGluZS1zZWNvbmRhcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZm9jdXMge1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEzNCwgMTQyLCAxNTAsIDAuNSk7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTM0LCAxNDIsIDE1MCwgMC41KTsgfVxcbi5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQge1xcbiAgICBjb2xvcjogIzg2OGU5NjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cXG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7XFxuICAgIGNvbG9yOiAjMjEyNTI5O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODY4ZTk2O1xcbiAgICBib3JkZXItY29sb3I6ICM4NjhlOTY7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTM0LCAxNDIsIDE1MCwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgxMzQsIDE0MiwgMTUwLCAwLjUpOyB9XFxuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3Mge1xcbiAgY29sb3I6ICMyOGE3NDU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XFxuICBib3JkZXItY29sb3I6ICMyOGE3NDU7IH1cXG4uYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xcbiAgICBib3JkZXItY29sb3I6ICMyOGE3NDU7IH1cXG4uYnRuLW91dGxpbmUtc3VjY2Vzczpmb2N1cywgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZm9jdXMge1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOyB9XFxuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkIHtcXG4gICAgY29sb3I6ICMyOGE3NDU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XFxuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUge1xcbiAgICBjb2xvcjogIzIxMjUyOTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1O1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOyB9XFxuLmJ0bi1vdXRsaW5lLWluZm8ge1xcbiAgY29sb3I6ICMxN2EyYjg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XFxuICBib3JkZXItY29sb3I6ICMxN2EyYjg7IH1cXG4uYnRuLW91dGxpbmUtaW5mbzpob3ZlciB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4O1xcbiAgICBib3JkZXItY29sb3I6ICMxN2EyYjg7IH1cXG4uYnRuLW91dGxpbmUtaW5mbzpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm8uZm9jdXMge1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7IH1cXG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQge1xcbiAgICBjb2xvcjogIzE3YTJiODtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cXG4uYnRuLW91dGxpbmUtaW5mbzpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtaW5mbzpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7XFxuICAgIGNvbG9yOiAjMjEyNTI5O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4O1xcbiAgICBib3JkZXItY29sb3I6ICMxN2EyYjg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAwLjUpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTsgfVxcbi5idG4tb3V0bGluZS13YXJuaW5nIHtcXG4gIGNvbG9yOiAjZmZjMTA3O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xcbiAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3OyB9XFxuLmJ0bi1vdXRsaW5lLXdhcm5pbmc6aG92ZXIge1xcbiAgICBjb2xvcjogIzIxMjUyOTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNztcXG4gICAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3OyB9XFxuLmJ0bi1vdXRsaW5lLXdhcm5pbmc6Zm9jdXMsIC5idG4tb3V0bGluZS13YXJuaW5nLmZvY3VzIHtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsgfVxcbi5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxlZCB7XFxuICAgIGNvbG9yOiAjZmZjMTA3O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxcbi5idG4tb3V0bGluZS13YXJuaW5nOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS13YXJuaW5nOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlIHtcXG4gICAgY29sb3I6ICMyMTI1Mjk7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7XFxuICAgIGJvcmRlci1jb2xvcjogI2ZmYzEwNztcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsgfVxcbi5idG4tb3V0bGluZS1kYW5nZXIge1xcbiAgY29sb3I6ICNkYzM1NDU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XFxuICBib3JkZXItY29sb3I6ICNkYzM1NDU7IH1cXG4uYnRuLW91dGxpbmUtZGFuZ2VyOmhvdmVyIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7XFxuICAgIGJvcmRlci1jb2xvcjogI2RjMzU0NTsgfVxcbi5idG4tb3V0bGluZS1kYW5nZXI6Zm9jdXMsIC5idG4tb3V0bGluZS1kYW5nZXIuZm9jdXMge1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjUpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjUpOyB9XFxuLmJ0bi1vdXRsaW5lLWRhbmdlci5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZCB7XFxuICAgIGNvbG9yOiAjZGMzNTQ1O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxcbi5idG4tb3V0bGluZS1kYW5nZXI6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlIHtcXG4gICAgY29sb3I6ICMyMTI1Mjk7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7XFxuICAgIGJvcmRlci1jb2xvcjogI2RjMzU0NTtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsgfVxcbi5idG4tb3V0bGluZS1saWdodCB7XFxuICBjb2xvcjogI2Y4ZjlmYTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcXG4gIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsgfVxcbi5idG4tb3V0bGluZS1saWdodDpob3ZlciB7XFxuICAgIGNvbG9yOiAjMjEyNTI5O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xcbiAgICBib3JkZXItY29sb3I6ICNmOGY5ZmE7IH1cXG4uYnRuLW91dGxpbmUtbGlnaHQ6Zm9jdXMsIC5idG4tb3V0bGluZS1saWdodC5mb2N1cyB7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOyB9XFxuLmJ0bi1vdXRsaW5lLWxpZ2h0LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtbGlnaHQ6ZGlzYWJsZWQge1xcbiAgICBjb2xvcjogI2Y4ZjlmYTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cXG4uYnRuLW91dGxpbmUtbGlnaHQ6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZSB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xcbiAgICBib3JkZXItY29sb3I6ICNmOGY5ZmE7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOyB9XFxuLmJ0bi1vdXRsaW5lLWRhcmsge1xcbiAgY29sb3I6ICMzNDNhNDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XFxuICBib3JkZXItY29sb3I6ICMzNDNhNDA7IH1cXG4uYnRuLW91dGxpbmUtZGFyazpob3ZlciB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xcbiAgICBib3JkZXItY29sb3I6ICMzNDNhNDA7IH1cXG4uYnRuLW91dGxpbmUtZGFyazpmb2N1cywgLmJ0bi1vdXRsaW5lLWRhcmsuZm9jdXMge1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTsgfVxcbi5idG4tb3V0bGluZS1kYXJrLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZGFyazpkaXNhYmxlZCB7XFxuICAgIGNvbG9yOiAjMzQzYTQwO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxcbi5idG4tb3V0bGluZS1kYXJrOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1kYXJrOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHtcXG4gICAgY29sb3I6ICMyMTI1Mjk7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7XFxuICAgIGJvcmRlci1jb2xvcjogIzM0M2E0MDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAwLjUpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7IH1cXG4uYnRuLWxpbmsge1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGNvbG9yOiAjMDA3YmZmO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cXG4uYnRuLWxpbms6aG92ZXIge1xcbiAgICBjb2xvcjogIzAwNTZiMztcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyB9XFxuLmJ0bi1saW5rOmZvY3VzLCAuYnRuLWxpbmsuZm9jdXMge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7IH1cXG4uYnRuLWxpbms6ZGlzYWJsZWQsIC5idG4tbGluay5kaXNhYmxlZCB7XFxuICAgIGNvbG9yOiAjODY4ZTk2OyB9XFxuLmJ0bi1sZywgLmJ0bi1ncm91cC1sZyA+IC5idG4ge1xcbiAgcGFkZGluZzogMC41cmVtIDFyZW07XFxuICBmb250LXNpemU6IDEuMjVyZW07XFxuICBsaW5lLWhlaWdodDogMS41O1xcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtOyB9XFxuLmJ0bi1zbSwgLmJ0bi1ncm91cC1zbSA+IC5idG4ge1xcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsgfVxcbi5idG4tYmxvY2sge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTsgfVxcbi5idG4tYmxvY2sgKyAuYnRuLWJsb2NrIHtcXG4gICAgbWFyZ2luLXRvcDogMC41cmVtOyB9XFxuaW5wdXRbdHlwZT1cXFwic3VibWl0XFxcIl0uYnRuLWJsb2NrLCBpbnB1dFt0eXBlPVxcXCJyZXNldFxcXCJdLmJ0bi1ibG9jaywgaW5wdXRbdHlwZT1cXFwiYnV0dG9uXFxcIl0uYnRuLWJsb2NrIHtcXG4gIHdpZHRoOiAxMDAlOyB9XFxuLmZhZGUge1xcbiAgb3BhY2l0eTogMDtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXI7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsgfVxcbi5mYWRlLnNob3cge1xcbiAgICBvcGFjaXR5OiAxOyB9XFxuLmNvbGxhcHNlIHtcXG4gIGRpc3BsYXk6IG5vbmU7IH1cXG4uY29sbGFwc2Uuc2hvdyB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxudHIuY29sbGFwc2Uuc2hvdyB7XFxuICBkaXNwbGF5OiB0YWJsZS1yb3c7IH1cXG50Ym9keS5jb2xsYXBzZS5zaG93IHtcXG4gIGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cDsgfVxcbi5jb2xsYXBzaW5nIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogMDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICAtd2Via2l0LXRyYW5zaXRpb246IGhlaWdodCAwLjM1cyBlYXNlO1xcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMzVzIGVhc2U7IH1cXG4uZHJvcHVwLCAuZHJvcGRvd24ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XFxuLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgd2lkdGg6IDA7XFxuICBoZWlnaHQ6IDA7XFxuICBtYXJnaW4tbGVmdDogMC4yNTVlbTtcXG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZDtcXG4gIGJvcmRlci1yaWdodDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItYm90dG9tOiAwO1xcbiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OyB9XFxuLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIge1xcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4uZHJvcGRvd24tbWVudSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDEwMCU7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogMTAwMDtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICBmbG9hdDogbGVmdDtcXG4gIG1pbi13aWR0aDogMTByZW07XFxuICBwYWRkaW5nOiAwLjVyZW0gMDtcXG4gIG1hcmdpbjogMC4xMjVyZW0gMCAwO1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbiAgY29sb3I6ICMyMTI1Mjk7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgbGlzdC1zdHlsZTogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cXG4uZHJvcHVwIC5kcm9wZG93bi1tZW51IHtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBtYXJnaW4tYm90dG9tOiAwLjEyNXJlbTsgfVxcbi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgd2lkdGg6IDA7XFxuICBoZWlnaHQ6IDA7XFxuICBtYXJnaW4tbGVmdDogMC4yNTVlbTtcXG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBib3JkZXItdG9wOiAwO1xcbiAgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1ib3R0b206IDAuM2VtIHNvbGlkO1xcbiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OyB9XFxuLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7XFxuICBtYXJnaW4tbGVmdDogMDsgfVxcbi5kcm9wcmlnaHQgLmRyb3Bkb3duLW1lbnUge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIG1hcmdpbi1sZWZ0OiAwLjEyNXJlbTsgfVxcbi5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgd2lkdGg6IDA7XFxuICBoZWlnaHQ6IDA7XFxuICBtYXJnaW4tbGVmdDogMC4yNTVlbTtcXG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1ib3R0b206IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkOyB9XFxuLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7XFxuICBtYXJnaW4tbGVmdDogMDsgfVxcbi5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xcbiAgdmVydGljYWwtYWxpZ246IDA7IH1cXG4uZHJvcGxlZnQgLmRyb3Bkb3duLW1lbnUge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIG1hcmdpbi1yaWdodDogMC4xMjVyZW07IH1cXG4uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgd2lkdGg6IDA7XFxuICBoZWlnaHQ6IDA7XFxuICBtYXJnaW4tbGVmdDogMC4yNTVlbTtcXG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xcbiAgY29udGVudDogXFxcIlxcXCI7IH1cXG4uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xcbiAgZGlzcGxheTogbm9uZTsgfVxcbi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjpiZWZvcmUge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgd2lkdGg6IDA7XFxuICBoZWlnaHQ6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IDAuMjU1ZW07XFxuICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgYm9yZGVyLXRvcDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmlnaHQ6IDAuM2VtIHNvbGlkO1xcbiAgYm9yZGVyLWJvdHRvbTogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7IH1cXG4uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIge1xcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHtcXG4gIHZlcnRpY2FsLWFsaWduOiAwOyB9XFxuLmRyb3Bkb3duLWRpdmlkZXIge1xcbiAgaGVpZ2h0OiAwO1xcbiAgbWFyZ2luOiAwLjVyZW0gMDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjsgfVxcbi5kcm9wZG93bi1pdGVtIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBwYWRkaW5nOiAwLjI1cmVtIDEuNXJlbTtcXG4gIGNsZWFyOiBib3RoO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGNvbG9yOiAjMjEyNTI5O1xcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlcjogMDsgfVxcbi5kcm9wZG93bi1pdGVtOmZvY3VzLCAuZHJvcGRvd24taXRlbTpob3ZlciB7XFxuICAgIGNvbG9yOiAjMTYxODFiO1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7IH1cXG4uZHJvcGRvd24taXRlbS5hY3RpdmUsIC5kcm9wZG93bi1pdGVtOmFjdGl2ZSB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7IH1cXG4uZHJvcGRvd24taXRlbS5kaXNhYmxlZCwgLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWQge1xcbiAgICBjb2xvcjogIzg2OGU5NjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cXG4uZHJvcGRvd24tbWVudS5zaG93IHtcXG4gIGRpc3BsYXk6IGJsb2NrOyB9XFxuLmRyb3Bkb3duLWhlYWRlciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBhZGRpbmc6IDAuNXJlbSAxLjVyZW07XFxuICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGNvbG9yOiAjODY4ZTk2O1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcbi5idG4tZ3JvdXAsIC5idG4tZ3JvdXAtdmVydGljYWwge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94O1xcbiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XFxuLmJ0bi1ncm91cCA+IC5idG4sIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgLW1zLWZsZXg6IDAgMSBhdXRvO1xcbiAgICAgICAgICAgIGZsZXg6IDAgMSBhdXRvOyB9XFxuLmJ0bi1ncm91cCA+IC5idG46aG92ZXIsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmhvdmVyIHtcXG4gICAgICB6LWluZGV4OiAxOyB9XFxuLmJ0bi1ncm91cCA+IC5idG46Zm9jdXMsIC5idG4tZ3JvdXAgPiAuYnRuOmFjdGl2ZSwgLmJ0bi1ncm91cCA+IC5idG4uYWN0aXZlLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpmb2N1cywgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi5hY3RpdmUge1xcbiAgICAgIHotaW5kZXg6IDE7IH1cXG4uYnRuLWdyb3VwIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0xcHg7IH1cXG4uYnRuLXRvb2xiYXIge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcXG4gIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0O1xcbiAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0O1xcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cXG4uYnRuLXRvb2xiYXIgLmlucHV0LWdyb3VwIHtcXG4gICAgd2lkdGg6IGF1dG87IH1cXG4uYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7XFxuICBtYXJnaW4tbGVmdDogMDsgfVxcbi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLCAuYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOyB9XFxuLmJ0bi1ncm91cCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksIC5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsgfVxcbi5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xcbiAgcGFkZGluZy1yaWdodDogMC41NjI1cmVtO1xcbiAgcGFkZGluZy1sZWZ0OiAwLjU2MjVyZW07IH1cXG4uZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwOyB9XFxuLmJ0bi1zbSArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtc20gPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjM3NXJlbTtcXG4gIHBhZGRpbmctbGVmdDogMC4zNzVyZW07IH1cXG4uYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCwgLmJ0bi1ncm91cC1sZyA+IC5idG4gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XFxuICBwYWRkaW5nLWxlZnQ6IDAuNzVyZW07IH1cXG4uYnRuLWdyb3VwLXZlcnRpY2FsIHtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7XFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cXG4uYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4sIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCB7XFxuICAgIHdpZHRoOiAxMDAlOyB9XFxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4tZ3JvdXAsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwICsgLmJ0biwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHtcXG4gICAgbWFyZ2luLXRvcDogLTFweDtcXG4gICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcXG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsgfVxcbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4ge1xcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgfVxcbi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biB7XFxuICBtYXJnaW4tYm90dG9tOiAwOyB9XFxuLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuIGlucHV0W3R5cGU9XFxcInJhZGlvXFxcIl0sIC5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biBpbnB1dFt0eXBlPVxcXCJjaGVja2JveFxcXCJdLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIGlucHV0W3R5cGU9XFxcInJhZGlvXFxcIl0sIC5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0bi1ncm91cCA+IC5idG4gaW5wdXRbdHlwZT1cXFwiY2hlY2tib3hcXFwiXSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cXG4uaW5wdXQtZ3JvdXAge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoO1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoO1xcbiAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcXG4gIHdpZHRoOiAxMDAlOyB9XFxuLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2wsIC5pbnB1dC1ncm91cCAuY3VzdG9tLXNlbGVjdCwgLmlucHV0LWdyb3VwIC5jdXN0b20tZmlsZSB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgd2lkdGg6IDElO1xcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9XFxuLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6Zm9jdXMsIC5pbnB1dC1ncm91cCAuY3VzdG9tLXNlbGVjdDpmb2N1cywgLmlucHV0LWdyb3VwIC5jdXN0b20tZmlsZTpmb2N1cyB7XFxuICAgICAgei1pbmRleDogMzsgfVxcbi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sICsgLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwIC5jdXN0b20tc2VsZWN0ICsgLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwIC5jdXN0b20tZmlsZSArIC5mb3JtLWNvbnRyb2wge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OyB9XFxuLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bm90KDpsYXN0LWNoaWxkKSwgLmlucHV0LWdyb3VwIC5jdXN0b20tc2VsZWN0Om5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcXG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH1cXG4uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKSwgLmlucHV0LWdyb3VwIC5jdXN0b20tc2VsZWN0Om5vdCg6Zmlyc3QtY2hpbGQpIHtcXG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcXG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsgfVxcbi5pbnB1dC1ncm91cCAuY3VzdG9tLWZpbGUge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4uaW5wdXQtZ3JvdXAgLmN1c3RvbS1maWxlOm5vdCg6bGFzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWNvbnRyb2wsIC5pbnB1dC1ncm91cCAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtY29udHJvbDo6YmVmb3JlIHtcXG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcXG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfVxcbi5pbnB1dC1ncm91cCAuY3VzdG9tLWZpbGU6bm90KDpmaXJzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWNvbnRyb2wsIC5pbnB1dC1ncm91cCAuY3VzdG9tLWZpbGU6bm90KDpmaXJzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWNvbnRyb2w6OmJlZm9yZSB7XFxuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcXG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9XFxuLmlucHV0LWdyb3VwLXByZXBlbmQsIC5pbnB1dC1ncm91cC1hcHBlbmQge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4uaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIHotaW5kZXg6IDI7IH1cXG4uaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuICsgLmJ0biwgLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5idG4sIC5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5idG4sIC5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuIHtcXG4gICAgbWFyZ2luLWxlZnQ6IC0xcHg7IH1cXG4uaW5wdXQtZ3JvdXAtcHJlcGVuZCB7XFxuICBtYXJnaW4tcmlnaHQ6IC0xcHg7IH1cXG4uaW5wdXQtZ3JvdXAtYXBwZW5kIHtcXG4gIG1hcmdpbi1sZWZ0OiAtMXB4OyB9XFxuLmlucHV0LWdyb3VwLXRleHQge1xcbiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxuICBmb250LXNpemU6IDFyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIGNvbG9yOiAjNDk1MDU3O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhO1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsgfVxcbi5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9XFxcInJhZGlvXFxcIl0sIC5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9XFxcImNoZWNrYm94XFxcIl0ge1xcbiAgICBtYXJnaW4tdG9wOiAwOyB9XFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCkgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpsYXN0LWNoaWxkID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpsYXN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpsYXN0LWNoaWxkKSB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOyB9XFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpmaXJzdC1jaGlsZCkge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH1cXG4uY3VzdG9tLWNvbnRyb2wge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBtaW4taGVpZ2h0OiAxLjVyZW07XFxuICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTsgfVxcbi5jdXN0b20tY29udHJvbC1pbmxpbmUge1xcbiAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94O1xcbiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBtYXJnaW4tcmlnaHQ6IDFyZW07IH1cXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogLTE7XFxuICBvcGFjaXR5OiAwOyB9XFxuLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOyB9XFxuLmN1c3RvbS1jb250cm9sLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsgfVxcbi5jdXN0b20tY29udHJvbC1pbnB1dDphY3RpdmUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOyB9XFxuLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcXG4gICAgY29sb3I6ICM4NjhlOTY7IH1cXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsgfVxcbi5jdXN0b20tY29udHJvbC1sYWJlbCB7XFxuICBtYXJnaW4tYm90dG9tOiAwOyB9XFxuLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogMC4yNXJlbTtcXG4gICAgbGVmdDogMDtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIHdpZHRoOiAxcmVtO1xcbiAgICBoZWlnaHQ6IDFyZW07XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgICBjb250ZW50OiBcXFwiXFxcIjtcXG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsgfVxcbi5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogMC4yNXJlbTtcXG4gICAgbGVmdDogMDtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIHdpZHRoOiAxcmVtO1xcbiAgICBoZWlnaHQ6IDFyZW07XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDUwJSA1MCU7IH1cXG4uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cXG4uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsgfVxcbi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZmlsbD0nJTIzZmZmJyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNFJTNDL3N2ZyUzRVxcXCIpOyB9XFxuLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7IH1cXG4uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNCclM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBkPSdNMCAyaDQnLyUzRSUzQy9zdmclM0VcXFwiKTsgfVxcbi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xcbiAgYm9yZGVyLXJhZGl1czogNTAlOyB9XFxuLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7IH1cXG4uY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nLTQgLTQgOCA4JyUzRSUzQ2NpcmNsZSByPSczJyBmaWxsPSclMjNmZmYnLyUzRSUzQy9zdmclM0VcXFwiKTsgfVxcbi5jdXN0b20tc2VsZWN0IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpO1xcbiAgcGFkZGluZzogMC4zNzVyZW0gMS43NXJlbSAwLjM3NXJlbSAwLjc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIGNvbG9yOiAjNDk1MDU3O1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDUnJTNFJTNDcGF0aCBmaWxsPSclMjMzNDNhNDAnIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLyUzRSUzQy9zdmclM0VcXFwiKSBuby1yZXBlYXQgcmlnaHQgMC43NXJlbSBjZW50ZXI7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDhweCAxMHB4O1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxuICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XFxuICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7IH1cXG4uY3VzdG9tLXNlbGVjdDpmb2N1cyB7XFxuICAgIGJvcmRlci1jb2xvcjogIzgwYmRmZjtcXG4gICAgb3V0bGluZTogMDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA3NSksIDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA3NSksIDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsgfVxcbi5jdXN0b20tc2VsZWN0OmZvY3VzOjotbXMtdmFsdWUge1xcbiAgICAgIGNvbG9yOiAjNDk1MDU3O1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cXG4uY3VzdG9tLXNlbGVjdFttdWx0aXBsZV0sIC5jdXN0b20tc2VsZWN0W3NpemVdOm5vdChbc2l6ZT1cXFwiMVxcXCJdKSB7XFxuICAgIGhlaWdodDogYXV0bztcXG4gICAgcGFkZGluZy1yaWdodDogMC43NXJlbTtcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgfVxcbi5jdXN0b20tc2VsZWN0OmRpc2FibGVkIHtcXG4gICAgY29sb3I6ICM4NjhlOTY7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7IH1cXG4uY3VzdG9tLXNlbGVjdDo6LW1zLWV4cGFuZCB7XFxuICAgIG9wYWNpdHk6IDA7IH1cXG4uY3VzdG9tLXNlbGVjdC1zbSB7XFxuICBoZWlnaHQ6IGNhbGMoMS44MTI1cmVtICsgMnB4KTtcXG4gIHBhZGRpbmctdG9wOiAwLjM3NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbTtcXG4gIGZvbnQtc2l6ZTogNzUlOyB9XFxuLmN1c3RvbS1zZWxlY3QtbGcge1xcbiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTtcXG4gIHBhZGRpbmctdG9wOiAwLjM3NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbTtcXG4gIGZvbnQtc2l6ZTogMTI1JTsgfVxcbi5jdXN0b20tZmlsZSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTtcXG4gIG1hcmdpbi1ib3R0b206IDA7IH1cXG4uY3VzdG9tLWZpbGUtaW5wdXQge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogMjtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpO1xcbiAgbWFyZ2luOiAwO1xcbiAgb3BhY2l0eTogMDsgfVxcbi5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1jb250cm9sIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjODBiZGZmO1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7IH1cXG4uY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtY29udHJvbDo6YmVmb3JlIHtcXG4gICAgICBib3JkZXItY29sb3I6ICM4MGJkZmY7IH1cXG4uY3VzdG9tLWZpbGUtaW5wdXQ6bGFuZyhlbikgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHtcXG4gICAgY29udGVudDogXFxcIkJyb3dzZVxcXCI7IH1cXG4uY3VzdG9tLWZpbGUtbGFiZWwge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogMTtcXG4gIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTtcXG4gIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07XFxuICBsaW5lLWhlaWdodDogMS41O1xcbiAgY29sb3I6ICM0OTUwNTc7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cXG4uY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICBib3R0b206IDA7XFxuICAgIHotaW5kZXg6IDM7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBoZWlnaHQ6IGNhbGMoY2FsYygyLjI1cmVtICsgMnB4KSAtIDFweCAqIDIpO1xcbiAgICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41O1xcbiAgICBjb2xvcjogIzQ5NTA1NztcXG4gICAgY29udGVudDogXFxcIkJyb3dzZVxcXCI7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2NlZDRkYTtcXG4gICAgYm9yZGVyLXJhZGl1czogMCAwLjI1cmVtIDAuMjVyZW0gMDsgfVxcbi5uYXYge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcXG4gIHBhZGRpbmctbGVmdDogMDtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxuICBsaXN0LXN0eWxlOiBub25lOyB9XFxuLm5hdi1saW5rIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcGFkZGluZzogMC41cmVtIDFyZW07IH1cXG4ubmF2LWxpbms6Zm9jdXMsIC5uYXYtbGluazpob3ZlciB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxcbi5uYXYtbGluay5kaXNhYmxlZCB7XFxuICAgIGNvbG9yOiAjODY4ZTk2OyB9XFxuLm5hdi10YWJzIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlMmU2OyB9XFxuLm5hdi10YWJzIC5uYXYtaXRlbSB7XFxuICAgIG1hcmdpbi1ib3R0b206IC0xcHg7IH1cXG4ubmF2LXRhYnMgLm5hdi1saW5rIHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07XFxuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOyB9XFxuLm5hdi10YWJzIC5uYXYtbGluazpmb2N1cywgLm5hdi10YWJzIC5uYXYtbGluazpob3ZlciB7XFxuICAgICAgYm9yZGVyLWNvbG9yOiAjZTllY2VmICNlOWVjZWYgI2RlZTJlNjsgfVxcbi5uYXYtdGFicyAubmF2LWxpbmsuZGlzYWJsZWQge1xcbiAgICAgIGNvbG9yOiAjODY4ZTk2O1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cXG4ubmF2LXRhYnMgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdi10YWJzIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7XFxuICAgIGNvbG9yOiAjNDk1MDU3O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgICBib3JkZXItY29sb3I6ICNkZWUyZTYgI2RlZTJlNiAjZmZmOyB9XFxuLm5hdi10YWJzIC5kcm9wZG93bi1tZW51IHtcXG4gICAgbWFyZ2luLXRvcDogLTFweDtcXG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcXG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7IH1cXG4ubmF2LXBpbGxzIC5uYXYtbGluayB7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XFxuLm5hdi1waWxscyAubmF2LWxpbmsuYWN0aXZlLCAubmF2LXBpbGxzIC5zaG93ID4gLm5hdi1saW5rIHtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsgfVxcbi5uYXYtZmlsbCAubmF2LWl0ZW0ge1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XFxuLm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtIHtcXG4gIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwO1xcbiAgICAgIGZsZXgtYmFzaXM6IDA7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxO1xcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG4udGFiLWNvbnRlbnQgPiAudGFiLXBhbmUge1xcbiAgZGlzcGxheTogbm9uZTsgfVxcbi50YWItY29udGVudCA+IC5hY3RpdmUge1xcbiAgZGlzcGxheTogYmxvY2s7IH1cXG4ubmF2YmFyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLW1zLWZsZXgtd3JhcDogd3JhcDtcXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5O1xcbiAgICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XFxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtOyB9XFxuLm5hdmJhciA+IC5jb250YWluZXIsIC5uYXZiYXIgPiAuY29udGFpbmVyLWZsdWlkIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5O1xcbiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cXG4ubmF2YmFyLWJyYW5kIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHBhZGRpbmctdG9wOiAwLjMxMjVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC4zMTI1cmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XFxuLm5hdmJhci1icmFuZDpmb2N1cywgLm5hdmJhci1icmFuZDpob3ZlciB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxcbi5uYXZiYXItbmF2IHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgcGFkZGluZy1sZWZ0OiAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMDtcXG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cXG4ubmF2YmFyLW5hdiAubmF2LWxpbmsge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDA7IH1cXG4ubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7XFxuICAgIHBvc2l0aW9uOiBzdGF0aWM7XFxuICAgIGZsb2F0OiBub25lOyB9XFxuLm5hdmJhci10ZXh0IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHBhZGRpbmctdG9wOiAwLjVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC41cmVtOyB9XFxuLm5hdmJhci1jb2xsYXBzZSB7XFxuICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTtcXG4gICAgICBmbGV4LWJhc2lzOiAxMDAlO1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTtcXG4gICAgICAgICAgZmxleC1ncm93OiAxO1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuLm5hdmJhci10b2dnbGVyIHtcXG4gIHBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbTtcXG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cXG4ubmF2YmFyLXRvZ2dsZXI6Zm9jdXMsIC5uYXZiYXItdG9nZ2xlcjpob3ZlciB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxcbi5uYXZiYXItdG9nZ2xlcjpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCkge1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7IH1cXG4ubmF2YmFyLXRvZ2dsZXItaWNvbiB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB3aWR0aDogMS41ZW07XFxuICBoZWlnaHQ6IDEuNWVtO1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgYmFja2dyb3VuZDogbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsgfVxcbkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOTlweCkge1xcbiAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItZmx1aWQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDA7IH0gfVxcbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xcbiAgLm5hdmJhci1leHBhbmQtc20ge1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XFxuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAgICAgLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDtcXG4gICAgICAgICAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XFxuICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0O1xcbiAgICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XFxuICAgIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IHtcXG4gICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XFxuICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxcbiAgICAgIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxcbiAgICAgIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51LXJpZ2h0IHtcXG4gICAgICAgIHJpZ2h0OiAwO1xcbiAgICAgICAgbGVmdDogYXV0bzsgfVxcbiAgICAgIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAuNXJlbTtcXG4gICAgICAgIHBhZGRpbmctbGVmdDogLjVyZW07IH1cXG4gICAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItZmx1aWQge1xcbiAgICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDtcXG4gICAgICAgICAgZmxleC13cmFwOiBub3dyYXA7IH1cXG4gICAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1jb2xsYXBzZSB7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3ggIWltcG9ydGFudDtcXG4gICAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50O1xcbiAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcXG4gICAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bztcXG4gICAgICAgICAgZmxleC1iYXNpczogYXV0bzsgfVxcbiAgICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLXRvZ2dsZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH1cXG4gICAgLm5hdmJhci1leHBhbmQtc20gLmRyb3B1cCAuZHJvcGRvd24tbWVudSB7XFxuICAgICAgdG9wOiBhdXRvO1xcbiAgICAgIGJvdHRvbTogMTAwJTsgfSB9XFxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OXB4KSB7XFxuICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci1mbHVpZCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDA7XFxuICAgIHBhZGRpbmctbGVmdDogMDsgfSB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XFxuICAubmF2YmFyLWV4cGFuZC1tZCB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwO1xcbiAgICAgICAgICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cXG4gICAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYge1xcbiAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OyB9XFxuICAgICAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOyB9XFxuICAgICAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUtcmlnaHQge1xcbiAgICAgICAgcmlnaHQ6IDA7XFxuICAgICAgICBsZWZ0OiBhdXRvOyB9XFxuICAgICAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IC41cmVtO1xcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAuNXJlbTsgfVxcbiAgICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci1mbHVpZCB7XFxuICAgICAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xcbiAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDsgfVxcbiAgICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLWNvbGxhcHNlIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveCAhaW1wb3J0YW50O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7XFxuICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xcbiAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvO1xcbiAgICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOyB9XFxuICAgIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItdG9nZ2xlciB7XFxuICAgICAgZGlzcGxheTogbm9uZTsgfVxcbiAgICAubmF2YmFyLWV4cGFuZC1tZCAuZHJvcHVwIC5kcm9wZG93bi1tZW51IHtcXG4gICAgICB0b3A6IGF1dG87XFxuICAgICAgYm90dG9tOiAxMDAlOyB9IH1cXG5AbWVkaWEgKG1heC13aWR0aDogOTkxLjk5cHgpIHtcXG4gIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLWZsdWlkIHtcXG4gICAgcGFkZGluZy1yaWdodDogMDtcXG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcXG4gIC5uYXZiYXItZXhwYW5kLWxnIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgIC1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7XFxuICAgICAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDtcXG4gICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0O1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfVxcbiAgICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiB7XFxuICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdztcXG4gICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7IH1cXG4gICAgICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cXG4gICAgICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudS1yaWdodCB7XFxuICAgICAgICByaWdodDogMDtcXG4gICAgICAgIGxlZnQ6IGF1dG87IH1cXG4gICAgICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xcbiAgICAgICAgcGFkZGluZy1yaWdodDogLjVyZW07XFxuICAgICAgICBwYWRkaW5nLWxlZnQ6IC41cmVtOyB9XFxuICAgIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLWZsdWlkIHtcXG4gICAgICAtbXMtZmxleC13cmFwOiBub3dyYXA7XFxuICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwOyB9XFxuICAgIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItY29sbGFwc2Uge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94ICFpbXBvcnRhbnQ7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDtcXG4gICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XFxuICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87XFxuICAgICAgICAgIGZsZXgtYmFzaXM6IGF1dG87IH1cXG4gICAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci10b2dnbGVyIHtcXG4gICAgICBkaXNwbGF5OiBub25lOyB9XFxuICAgIC5uYXZiYXItZXhwYW5kLWxnIC5kcm9wdXAgLmRyb3Bkb3duLW1lbnUge1xcbiAgICAgIHRvcDogYXV0bztcXG4gICAgICBib3R0b206IDEwMCU7IH0gfVxcbkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk5cHgpIHtcXG4gIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLWZsdWlkIHtcXG4gICAgcGFkZGluZy1yaWdodDogMDtcXG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XFxuICAubmF2YmFyLWV4cGFuZC14bCB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwO1xcbiAgICAgICAgICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cXG4gICAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYge1xcbiAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OyB9XFxuICAgICAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOyB9XFxuICAgICAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUtcmlnaHQge1xcbiAgICAgICAgcmlnaHQ6IDA7XFxuICAgICAgICBsZWZ0OiBhdXRvOyB9XFxuICAgICAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IC41cmVtO1xcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAuNXJlbTsgfVxcbiAgICAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7XFxuICAgICAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xcbiAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDsgfVxcbiAgICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLWNvbGxhcHNlIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveCAhaW1wb3J0YW50O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7XFxuICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xcbiAgICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvO1xcbiAgICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOyB9XFxuICAgIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItdG9nZ2xlciB7XFxuICAgICAgZGlzcGxheTogbm9uZTsgfVxcbiAgICAubmF2YmFyLWV4cGFuZC14bCAuZHJvcHVwIC5kcm9wZG93bi1tZW51IHtcXG4gICAgICB0b3A6IGF1dG87XFxuICAgICAgYm90dG9tOiAxMDAlOyB9IH1cXG4ubmF2YmFyLWV4cGFuZCB7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwO1xcbiAgICAgICAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XFxuICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDtcXG4gICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDtcXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XFxuLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDA7IH1cXG4ubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdztcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OyB9XFxuLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxcbi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51LXJpZ2h0IHtcXG4gICAgICByaWdodDogMDtcXG4gICAgICBsZWZ0OiBhdXRvOyB9XFxuLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAuNXJlbTtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IC41cmVtOyB9XFxuLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQge1xcbiAgICAtbXMtZmxleC13cmFwOiBub3dyYXA7XFxuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDsgfVxcbi5uYXZiYXItZXhwYW5kIC5uYXZiYXItY29sbGFwc2Uge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveCAhaW1wb3J0YW50O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50O1xcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XFxuICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvO1xcbiAgICAgICAgZmxleC1iYXNpczogYXV0bzsgfVxcbi5uYXZiYXItZXhwYW5kIC5uYXZiYXItdG9nZ2xlciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7IH1cXG4ubmF2YmFyLWV4cGFuZCAuZHJvcHVwIC5kcm9wZG93bi1tZW51IHtcXG4gICAgdG9wOiBhdXRvO1xcbiAgICBib3R0b206IDEwMCU7IH1cXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsgfVxcbi5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZDpmb2N1cywgLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmhvdmVyIHtcXG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsgfVxcbi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpmb2N1cywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIge1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjcpOyB9XFxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQge1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjMpOyB9XFxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuc2hvdyA+IC5uYXYtbGluaywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5hY3RpdmUge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsgfVxcbi5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyIHtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XFxuICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTsgfVxcbi5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyLWljb24ge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIHN0cm9rZT0ncmdiYSgwLCAwLCAwLCAwLjUpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNFJTNDL3N2ZyUzRVxcXCIpOyB9XFxuLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsgfVxcbi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGEge1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpOyB9XFxuLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgYTpmb2N1cywgLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgYTpob3ZlciB7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsgfVxcbi5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kIHtcXG4gIGNvbG9yOiAjZmZmOyB9XFxuLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6Zm9jdXMsIC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kOmhvdmVyIHtcXG4gICAgY29sb3I6ICNmZmY7IH1cXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IH1cXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rOmZvY3VzLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rOmhvdmVyIHtcXG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7IH1cXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVkIHtcXG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7IH1cXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHtcXG4gIGNvbG9yOiAjZmZmOyB9XFxuLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlciB7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7IH1cXG4ubmF2YmFyLWRhcmsgLm5hdmJhci10b2dnbGVyLWljb24ge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIHN0cm9rZT0ncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNFJTNDL3N2ZyUzRVxcXCIpOyB9XFxuLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCB7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XFxuLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhIHtcXG4gICAgY29sb3I6ICNmZmY7IH1cXG4ubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IGE6Zm9jdXMsIC5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYTpob3ZlciB7XFxuICAgICAgY29sb3I6ICNmZmY7IH1cXG4uY2FyZCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIG1pbi13aWR0aDogMDtcXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNsaXA6IGJvcmRlci1ib3g7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cXG4uY2FyZCA+IGhyIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xcbiAgICBtYXJnaW4tbGVmdDogMDsgfVxcbi5jYXJkID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XFxuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07XFxuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOyB9XFxuLmNhcmQgPiAubGlzdC1ncm91cDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7XFxuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtOyB9XFxuLmNhcmQtYm9keSB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgICAgICAgZmxleDogMSAxIGF1dG87XFxuICBwYWRkaW5nOiAxLjI1cmVtOyB9XFxuLmNhcmQtdGl0bGUge1xcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTsgfVxcbi5jYXJkLXN1YnRpdGxlIHtcXG4gIG1hcmdpbi10b3A6IC0wLjM3NXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDA7IH1cXG4uY2FyZC10ZXh0Omxhc3QtY2hpbGQge1xcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxcbi5jYXJkLWxpbms6aG92ZXIge1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XFxuLmNhcmQtbGluayArIC5jYXJkLWxpbmsge1xcbiAgbWFyZ2luLWxlZnQ6IDEuMjVyZW07IH1cXG4uY2FyZC1oZWFkZXIge1xcbiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMyk7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7IH1cXG4uY2FyZC1oZWFkZXI6Zmlyc3QtY2hpbGQge1xcbiAgICBib3JkZXItcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpIGNhbGMoMC4yNXJlbSAtIDFweCkgMCAwOyB9XFxuLmNhcmQtaGVhZGVyICsgLmxpc3QtZ3JvdXAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XFxuICAgIGJvcmRlci10b3A6IDA7IH1cXG4uY2FyZC1mb290ZXIge1xcbiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTtcXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsgfVxcbi5jYXJkLWZvb3RlcjpsYXN0LWNoaWxkIHtcXG4gICAgYm9yZGVyLXJhZGl1czogMCAwIGNhbGMoMC4yNXJlbSAtIDFweCkgY2FsYygwLjI1cmVtIC0gMXB4KTsgfVxcbi5jYXJkLWhlYWRlci10YWJzIHtcXG4gIG1hcmdpbi1yaWdodDogLTAuNjI1cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogLTAuNzVyZW07XFxuICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtO1xcbiAgYm9yZGVyLWJvdHRvbTogMDsgfVxcbi5jYXJkLWhlYWRlci1waWxscyB7XFxuICBtYXJnaW4tcmlnaHQ6IC0wLjYyNXJlbTtcXG4gIG1hcmdpbi1sZWZ0OiAtMC42MjVyZW07IH1cXG4uY2FyZC1pbWctb3ZlcmxheSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICByaWdodDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICBwYWRkaW5nOiAxLjI1cmVtOyB9XFxuLmNhcmQtaW1nIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYm9yZGVyLXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsgfVxcbi5jYXJkLWltZy10b3Age1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpO1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGMoMC4yNXJlbSAtIDFweCk7IH1cXG4uY2FyZC1pbWctYm90dG9tIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IGNhbGMoMC4yNXJlbSAtIDFweCk7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpOyB9XFxuLmNhcmQtZGVjayB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxcbi5jYXJkLWRlY2sgLmNhcmQge1xcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4OyB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XFxuICAgIC5jYXJkLWRlY2sge1xcbiAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgICAgLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7XFxuICAgICAgICAgICAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xcbiAgICAgIG1hcmdpbi1yaWdodDogLTE1cHg7XFxuICAgICAgbWFyZ2luLWxlZnQ6IC0xNXB4OyB9XFxuICAgICAgLmNhcmQtZGVjayAuY2FyZCB7XFxuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAgICAgLW1zLWZsZXg6IDEgMCAwJTtcXG4gICAgICAgICAgICAgICAgZmxleDogMSAwIDAlO1xcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAgICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4OyB9IH1cXG4uY2FyZC1ncm91cCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxcbi5jYXJkLWdyb3VwID4gLmNhcmQge1xcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4OyB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XFxuICAgIC5jYXJkLWdyb3VwIHtcXG4gICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XFxuICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgICAgIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwO1xcbiAgICAgICAgICAgICAgZmxleC1mbG93OiByb3cgd3JhcDsgfVxcbiAgICAgIC5jYXJkLWdyb3VwID4gLmNhcmQge1xcbiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgICAgICAtbXMtZmxleDogMSAwIDAlO1xcbiAgICAgICAgICAgICAgICBmbGV4OiAxIDAgMCU7XFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XFxuICAgICAgICAuY2FyZC1ncm91cCA+IC5jYXJkICsgLmNhcmQge1xcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgICAgICAgYm9yZGVyLWxlZnQ6IDA7IH1cXG4gICAgICAgIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQge1xcbiAgICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcXG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH1cXG4gICAgICAgICAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWhlYWRlciB7XFxuICAgICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7IH1cXG4gICAgICAgICAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1pbWctYm90dG9tLCAuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWZvb3RlciB7XFxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH1cXG4gICAgICAgIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCB7XFxuICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XFxuICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH1cXG4gICAgICAgICAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy10b3AsIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1oZWFkZXIge1xcbiAgICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IH1cXG4gICAgICAgICAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1mb290ZXIge1xcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH1cXG4gICAgICAgIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCB7XFxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cXG4gICAgICAgICAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy10b3AsIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1oZWFkZXIge1xcbiAgICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07XFxuICAgICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW07IH1cXG4gICAgICAgICAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1mb290ZXIge1xcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07IH1cXG4gICAgICAgIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoOm9ubHktY2hpbGQpIHtcXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMDsgfVxcbiAgICAgICAgICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1pbWctYm90dG9tLCAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1oZWFkZXIsIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoOm9ubHktY2hpbGQpIC5jYXJkLWZvb3RlciB7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDsgfSB9XFxuLmNhcmQtY29sdW1ucyAuY2FyZCB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOyB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XFxuICAuY2FyZC1jb2x1bW5zIHtcXG4gICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDM7XFxuICAgICAgICAgICAgY29sdW1uLWNvdW50OiAzO1xcbiAgICAtd2Via2l0LWNvbHVtbi1nYXA6IDEuMjVyZW07XFxuICAgICAgICAgICAgY29sdW1uLWdhcDogMS4yNXJlbTsgfVxcbiAgICAuY2FyZC1jb2x1bW5zIC5jYXJkIHtcXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgICAgd2lkdGg6IDEwMCU7IH0gfVxcbi5icmVhZGNydW1iIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLW1zLWZsZXgtd3JhcDogd3JhcDtcXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XFxuICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07XFxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xcbiAgbGlzdC1zdHlsZTogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XFxuLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06OmJlZm9yZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XFxuICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcXG4gIGNvbG9yOiAjODY4ZTk2O1xcbiAgY29udGVudDogXFxcIi9cXFwiOyB9XFxuLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7XFxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfVxcbi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOmhvdmVyOjpiZWZvcmUge1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XFxuLmJyZWFkY3J1bWItaXRlbS5hY3RpdmUge1xcbiAgY29sb3I6ICM4NjhlOTY7IH1cXG4ucGFnaW5hdGlvbiB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHBhZGRpbmctbGVmdDogMDtcXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XFxuLnBhZ2UtbGluayB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xcbiAgbWFyZ2luLWxlZnQ6IC0xcHg7XFxuICBsaW5lLWhlaWdodDogMS4yNTtcXG4gIGNvbG9yOiAjMDA3YmZmO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7IH1cXG4ucGFnZS1saW5rOmZvY3VzLCAucGFnZS1saW5rOmhvdmVyIHtcXG4gICAgY29sb3I6ICMwMDU2YjM7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2OyB9XFxuLnBhZ2UtbGluazpub3QoW2Rpc2FibGVkXSk6bm90KC5kaXNhYmxlZCkge1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7IH1cXG4ucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsge1xcbiAgbWFyZ2luLWxlZnQ6IDA7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTsgfVxcbi5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07IH1cXG4ucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5rIHtcXG4gIHotaW5kZXg6IDE7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XFxuICBib3JkZXItY29sb3I6ICMwMDdiZmY7IH1cXG4ucGFnZS1pdGVtLmRpc2FibGVkIC5wYWdlLWxpbmsge1xcbiAgY29sb3I6ICM4NjhlOTY7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGN1cnNvcjogYXV0bztcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICBib3JkZXItY29sb3I6ICNkZWUyZTY7IH1cXG4ucGFnaW5hdGlvbi1sZyAucGFnZS1saW5rIHtcXG4gIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTsgfVxcbi5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGluayB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjNyZW07XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjNyZW07IH1cXG4ucGFnaW5hdGlvbi1sZyAucGFnZS1pdGVtOmxhc3QtY2hpbGQgLnBhZ2UtbGluayB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4zcmVtO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuM3JlbTsgfVxcbi5wYWdpbmF0aW9uLXNtIC5wYWdlLWxpbmsge1xcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTsgfVxcbi5wYWdpbmF0aW9uLXNtIC5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGluayB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjJyZW07XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjJyZW07IH1cXG4ucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmxhc3QtY2hpbGQgLnBhZ2UtbGluayB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4ycmVtO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMnJlbTsgfVxcbi5iYWRnZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBwYWRkaW5nOiAwLjI1ZW0gMC40ZW07XFxuICBmb250LXNpemU6IDc1JTtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICBsaW5lLWhlaWdodDogMTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XFxuLmJhZGdlOmVtcHR5IHtcXG4gICAgZGlzcGxheTogbm9uZTsgfVxcbi5idG4gLmJhZGdlIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHRvcDogLTFweDsgfVxcbi5iYWRnZS1waWxsIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuNmVtO1xcbiAgcGFkZGluZy1sZWZ0OiAwLjZlbTtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcmVtOyB9XFxuLmJhZGdlLXByaW1hcnkge1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOyB9XFxuLmJhZGdlLXByaW1hcnlbaHJlZl06Zm9jdXMsIC5iYWRnZS1wcmltYXJ5W2hyZWZdOmhvdmVyIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYzsgfVxcbi5iYWRnZS1zZWNvbmRhcnkge1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODY4ZTk2OyB9XFxuLmJhZGdlLXNlY29uZGFyeVtocmVmXTpmb2N1cywgLmJhZGdlLXNlY29uZGFyeVtocmVmXTpob3ZlciB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7IH1cXG4uYmFkZ2Utc3VjY2VzcyB7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7IH1cXG4uYmFkZ2Utc3VjY2Vzc1tocmVmXTpmb2N1cywgLmJhZGdlLXN1Y2Nlc3NbaHJlZl06aG92ZXIge1xcbiAgICBjb2xvcjogI2ZmZjtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0OyB9XFxuLmJhZGdlLWluZm8ge1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OyB9XFxuLmJhZGdlLWluZm9baHJlZl06Zm9jdXMsIC5iYWRnZS1pbmZvW2hyZWZdOmhvdmVyIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzExN2E4YjsgfVxcbi5iYWRnZS13YXJuaW5nIHtcXG4gIGNvbG9yOiAjMjEyNTI5O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsgfVxcbi5iYWRnZS13YXJuaW5nW2hyZWZdOmZvY3VzLCAuYmFkZ2Utd2FybmluZ1tocmVmXTpob3ZlciB7XFxuICAgIGNvbG9yOiAjMjEyNTI5O1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNkMzllMDA7IH1cXG4uYmFkZ2UtZGFuZ2VyIHtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsgfVxcbi5iYWRnZS1kYW5nZXJbaHJlZl06Zm9jdXMsIC5iYWRnZS1kYW5nZXJbaHJlZl06aG92ZXIge1xcbiAgICBjb2xvcjogI2ZmZjtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwOyB9XFxuLmJhZGdlLWxpZ2h0IHtcXG4gIGNvbG9yOiAjMjEyNTI5O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsgfVxcbi5iYWRnZS1saWdodFtocmVmXTpmb2N1cywgLmJhZGdlLWxpZ2h0W2hyZWZdOmhvdmVyIHtcXG4gICAgY29sb3I6ICMyMTI1Mjk7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RhZTBlNTsgfVxcbi5iYWRnZS1kYXJrIHtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsgfVxcbi5iYWRnZS1kYXJrW2hyZWZdOmZvY3VzLCAuYmFkZ2UtZGFya1tocmVmXTpob3ZlciB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQ7IH1cXG4uanVtYm90cm9uIHtcXG4gIHBhZGRpbmc6IDJyZW0gMXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDJyZW07XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtOyB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XFxuICAgIC5qdW1ib3Ryb24ge1xcbiAgICAgIHBhZGRpbmc6IDRyZW0gMnJlbTsgfSB9XFxuLmp1bWJvdHJvbi1mbHVpZCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAwO1xcbiAgcGFkZGluZy1sZWZ0OiAwO1xcbiAgYm9yZGVyLXJhZGl1czogMDsgfVxcbi5hbGVydCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07XFxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XFxuLmFsZXJ0LWhlYWRpbmcge1xcbiAgY29sb3I6IGluaGVyaXQ7IH1cXG4uYWxlcnQtbGluayB7XFxuICBmb250LXdlaWdodDogNzAwOyB9XFxuLmFsZXJ0LWRpc21pc3NpYmxlIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDRyZW07IH1cXG4uYWxlcnQtZGlzbWlzc2libGUgLmNsb3NlIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07XFxuICAgIGNvbG9yOiBpbmhlcml0OyB9XFxuLmFsZXJ0LXByaW1hcnkge1xcbiAgY29sb3I6ICMwMDQwODU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NlNWZmO1xcbiAgYm9yZGVyLWNvbG9yOiAjYjhkYWZmOyB9XFxuLmFsZXJ0LXByaW1hcnkgaHIge1xcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjOWZjZGZmOyB9XFxuLmFsZXJ0LXByaW1hcnkgLmFsZXJ0LWxpbmsge1xcbiAgICBjb2xvcjogIzAwMjc1MjsgfVxcbi5hbGVydC1zZWNvbmRhcnkge1xcbiAgY29sb3I6ICM0NjRhNGU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTdlOGVhO1xcbiAgYm9yZGVyLWNvbG9yOiAjZGRkZmUyOyB9XFxuLmFsZXJ0LXNlY29uZGFyeSBociB7XFxuICAgIGJvcmRlci10b3AtY29sb3I6ICNjZmQyZDY7IH1cXG4uYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHtcXG4gICAgY29sb3I6ICMyZTMxMzM7IH1cXG4uYWxlcnQtc3VjY2VzcyB7XFxuICBjb2xvcjogIzE1NTcyNDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkNGVkZGE7XFxuICBib3JkZXItY29sb3I6ICNjM2U2Y2I7IH1cXG4uYWxlcnQtc3VjY2VzcyBociB7XFxuICAgIGJvcmRlci10b3AtY29sb3I6ICNiMWRmYmI7IH1cXG4uYWxlcnQtc3VjY2VzcyAuYWxlcnQtbGluayB7XFxuICAgIGNvbG9yOiAjMGIyZTEzOyB9XFxuLmFsZXJ0LWluZm8ge1xcbiAgY29sb3I6ICMwYzU0NjA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFlY2YxO1xcbiAgYm9yZGVyLWNvbG9yOiAjYmVlNWViOyB9XFxuLmFsZXJ0LWluZm8gaHIge1xcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjYWJkZGU1OyB9XFxuLmFsZXJ0LWluZm8gLmFsZXJ0LWxpbmsge1xcbiAgICBjb2xvcjogIzA2MmMzMzsgfVxcbi5hbGVydC13YXJuaW5nIHtcXG4gIGNvbG9yOiAjODU2NDA0O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjNjZDtcXG4gIGJvcmRlci1jb2xvcjogI2ZmZWViYTsgfVxcbi5hbGVydC13YXJuaW5nIGhyIHtcXG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZThhMTsgfVxcbi5hbGVydC13YXJuaW5nIC5hbGVydC1saW5rIHtcXG4gICAgY29sb3I6ICM1MzNmMDM7IH1cXG4uYWxlcnQtZGFuZ2VyIHtcXG4gIGNvbG9yOiAjNzIxYzI0O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZDdkYTtcXG4gIGJvcmRlci1jb2xvcjogI2Y1YzZjYjsgfVxcbi5hbGVydC1kYW5nZXIgaHIge1xcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjZjFiMGI3OyB9XFxuLmFsZXJ0LWRhbmdlciAuYWxlcnQtbGluayB7XFxuICAgIGNvbG9yOiAjNDkxMjE3OyB9XFxuLmFsZXJ0LWxpZ2h0IHtcXG4gIGNvbG9yOiAjODE4MTgyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZmVmZTtcXG4gIGJvcmRlci1jb2xvcjogI2ZkZmRmZTsgfVxcbi5hbGVydC1saWdodCBociB7XFxuICAgIGJvcmRlci10b3AtY29sb3I6ICNlY2VjZjY7IH1cXG4uYWxlcnQtbGlnaHQgLmFsZXJ0LWxpbmsge1xcbiAgICBjb2xvcjogIzY4Njg2ODsgfVxcbi5hbGVydC1kYXJrIHtcXG4gIGNvbG9yOiAjMWIxZTIxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q2ZDhkOTtcXG4gIGJvcmRlci1jb2xvcjogI2M2YzhjYTsgfVxcbi5hbGVydC1kYXJrIGhyIHtcXG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2I5YmJiZTsgfVxcbi5hbGVydC1kYXJrIC5hbGVydC1saW5rIHtcXG4gICAgY29sb3I6ICMwNDA1MDU7IH1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMge1xcbiAgZnJvbSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDFyZW0gMDsgfVxcbiAgdG8ge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0gfVxcbkBrZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMge1xcbiAgZnJvbSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDFyZW0gMDsgfVxcbiAgdG8ge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0gfVxcbi5wcm9ncmVzcyB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGhlaWdodDogMXJlbTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBmb250LXNpemU6IDAuNzVyZW07XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsgfVxcbi5wcm9ncmVzcy1iYXIge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlO1xcbiAgdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlOyB9XFxuLnByb2dyZXNzLWJhci1zdHJpcGVkIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO1xcbiAgYmFja2dyb3VuZC1zaXplOiAxcmVtIDFyZW07IH1cXG4ucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBwcm9ncmVzcy1iYXItc3RyaXBlcyAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICAgICAgICAgIGFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMXMgbGluZWFyIGluZmluaXRlOyB9XFxuLm1lZGlhIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0O1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDtcXG4gICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cXG4ubWVkaWEtYm9keSB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgIC1tcy1mbGV4OiAxO1xcbiAgICAgICAgICBmbGV4OiAxOyB9XFxuLmxpc3QtZ3JvdXAge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBwYWRkaW5nLWxlZnQ6IDA7XFxuICBtYXJnaW4tYm90dG9tOiAwOyB9XFxuLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24ge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBjb2xvcjogIzQ5NTA1NztcXG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IH1cXG4ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cywgLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIge1xcbiAgICBjb2xvcjogIzQ5NTA1NztcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOyB9XFxuLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246YWN0aXZlIHtcXG4gICAgY29sb3I6ICMyMTI1Mjk7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7IH1cXG4ubGlzdC1ncm91cC1pdGVtIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogLTFweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsgfVxcbi5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsgfVxcbi5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtOyB9XFxuLmxpc3QtZ3JvdXAtaXRlbTpmb2N1cywgLmxpc3QtZ3JvdXAtaXRlbTpob3ZlciB7XFxuICAgIHotaW5kZXg6IDE7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxcbi5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQsIC5saXN0LWdyb3VwLWl0ZW06ZGlzYWJsZWQge1xcbiAgICBjb2xvcjogIzg2OGU5NjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxcbi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHtcXG4gICAgei1pbmRleDogMjtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XFxuICAgIGJvcmRlci1jb2xvcjogIzAwN2JmZjsgfVxcbi5saXN0LWdyb3VwLWZsdXNoIC5saXN0LWdyb3VwLWl0ZW0ge1xcbiAgYm9yZGVyLXJpZ2h0OiAwO1xcbiAgYm9yZGVyLWxlZnQ6IDA7XFxuICBib3JkZXItcmFkaXVzOiAwOyB9XFxuLmxpc3QtZ3JvdXAtZmx1c2g6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XFxuICBib3JkZXItdG9wOiAwOyB9XFxuLmxpc3QtZ3JvdXAtZmx1c2g6bGFzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xcbiAgYm9yZGVyLWJvdHRvbTogMDsgfVxcbi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeSB7XFxuICBjb2xvcjogIzAwNDA4NTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiOGRhZmY7IH1cXG5hLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5LCBidXR0b24ubGlzdC1ncm91cC1pdGVtLXByaW1hcnkge1xcbiAgY29sb3I6ICMwMDQwODU7IH1cXG5hLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5OmZvY3VzLCBhLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5OmhvdmVyLCBidXR0b24ubGlzdC1ncm91cC1pdGVtLXByaW1hcnk6Zm9jdXMsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeTpob3ZlciB7XFxuICAgIGNvbG9yOiAjMDA0MDg1O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZjZGZmOyB9XFxuYS5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5hY3RpdmUsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5hY3RpdmUge1xcbiAgICBjb2xvcjogI2ZmZjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDA4NTtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMDA0MDg1OyB9XFxuLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkge1xcbiAgY29sb3I6ICM0NjRhNGU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZmUyOyB9XFxuYS5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5LCBidXR0b24ubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeSB7XFxuICBjb2xvcjogIzQ2NGE0ZTsgfVxcbmEubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeTpmb2N1cywgYS5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5OmhvdmVyLCBidXR0b24ubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeTpmb2N1cywgYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnk6aG92ZXIge1xcbiAgICBjb2xvcjogIzQ2NGE0ZTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2NmZDJkNjsgfVxcbmEubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeS5hY3RpdmUsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5LmFjdGl2ZSB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDY0YTRlO1xcbiAgICBib3JkZXItY29sb3I6ICM0NjRhNGU7IH1cXG4ubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3Mge1xcbiAgY29sb3I6ICMxNTU3MjQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzNlNmNiOyB9XFxuYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcywgYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIHtcXG4gIGNvbG9yOiAjMTU1NzI0OyB9XFxuYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzczpmb2N1cywgYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzczpob3ZlciwgYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzOmZvY3VzLCBidXR0b24ubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6aG92ZXIge1xcbiAgICBjb2xvcjogIzE1NTcyNDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsgfVxcbmEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlLCBidXR0b24ubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMxNTU3MjQ7XFxuICAgIGJvcmRlci1jb2xvcjogIzE1NTcyNDsgfVxcbi5saXN0LWdyb3VwLWl0ZW0taW5mbyB7XFxuICBjb2xvcjogIzBjNTQ2MDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiZWU1ZWI7IH1cXG5hLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLCBidXR0b24ubGlzdC1ncm91cC1pdGVtLWluZm8ge1xcbiAgY29sb3I6ICMwYzU0NjA7IH1cXG5hLmxpc3QtZ3JvdXAtaXRlbS1pbmZvOmZvY3VzLCBhLmxpc3QtZ3JvdXAtaXRlbS1pbmZvOmhvdmVyLCBidXR0b24ubGlzdC1ncm91cC1pdGVtLWluZm86Zm9jdXMsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0taW5mbzpob3ZlciB7XFxuICAgIGNvbG9yOiAjMGM1NDYwO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1OyB9XFxuYS5saXN0LWdyb3VwLWl0ZW0taW5mby5hY3RpdmUsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0taW5mby5hY3RpdmUge1xcbiAgICBjb2xvcjogI2ZmZjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzBjNTQ2MDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMGM1NDYwOyB9XFxuLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIHtcXG4gIGNvbG9yOiAjODU2NDA0O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsgfVxcbmEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0td2FybmluZyB7XFxuICBjb2xvcjogIzg1NjQwNDsgfVxcbmEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6Zm9jdXMsIGEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6aG92ZXIsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0td2FybmluZzpmb2N1cywgYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nOmhvdmVyIHtcXG4gICAgY29sb3I6ICM4NTY0MDQ7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmU4YTE7IH1cXG5hLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmFjdGl2ZSwgYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmFjdGl2ZSB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODU2NDA0O1xcbiAgICBib3JkZXItY29sb3I6ICM4NTY0MDQ7IH1cXG4ubGlzdC1ncm91cC1pdGVtLWRhbmdlciB7XFxuICBjb2xvcjogIzcyMWMyNDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWM2Y2I7IH1cXG5hLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyIHtcXG4gIGNvbG9yOiAjNzIxYzI0OyB9XFxuYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyOmZvY3VzLCBhLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6aG92ZXIsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyOmZvY3VzLCBidXR0b24ubGlzdC1ncm91cC1pdGVtLWRhbmdlcjpob3ZlciB7XFxuICAgIGNvbG9yOiAjNzIxYzI0O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFiMGI3OyB9XFxuYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmFjdGl2ZSwgYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYWN0aXZlIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM3MjFjMjQ7XFxuICAgIGJvcmRlci1jb2xvcjogIzcyMWMyNDsgfVxcbi5saXN0LWdyb3VwLWl0ZW0tbGlnaHQge1xcbiAgY29sb3I6ICM4MTgxODI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmZGZlOyB9XFxuYS5saXN0LWdyb3VwLWl0ZW0tbGlnaHQsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tbGlnaHQge1xcbiAgY29sb3I6ICM4MTgxODI7IH1cXG5hLmxpc3QtZ3JvdXAtaXRlbS1saWdodDpmb2N1cywgYS5saXN0LWdyb3VwLWl0ZW0tbGlnaHQ6aG92ZXIsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tbGlnaHQ6Zm9jdXMsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tbGlnaHQ6aG92ZXIge1xcbiAgICBjb2xvcjogIzgxODE4MjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWNmNjsgfVxcbmEubGlzdC1ncm91cC1pdGVtLWxpZ2h0LmFjdGl2ZSwgYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1saWdodC5hY3RpdmUge1xcbiAgICBjb2xvcjogI2ZmZjtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzgxODE4MjtcXG4gICAgYm9yZGVyLWNvbG9yOiAjODE4MTgyOyB9XFxuLmxpc3QtZ3JvdXAtaXRlbS1kYXJrIHtcXG4gIGNvbG9yOiAjMWIxZTIxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsgfVxcbmEubGlzdC1ncm91cC1pdGVtLWRhcmssIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFyayB7XFxuICBjb2xvcjogIzFiMWUyMTsgfVxcbmEubGlzdC1ncm91cC1pdGVtLWRhcms6Zm9jdXMsIGEubGlzdC1ncm91cC1pdGVtLWRhcms6aG92ZXIsIGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFyazpmb2N1cywgYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1kYXJrOmhvdmVyIHtcXG4gICAgY29sb3I6ICMxYjFlMjE7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNiOWJiYmU7IH1cXG5hLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmFjdGl2ZSwgYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmFjdGl2ZSB7XFxuICAgIGNvbG9yOiAjZmZmO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWIxZTIxO1xcbiAgICBib3JkZXItY29sb3I6ICMxYjFlMjE7IH1cXG4uY2xvc2Uge1xcbiAgZmxvYXQ6IHJpZ2h0O1xcbiAgZm9udC1zaXplOiAxLjVyZW07XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxuICBjb2xvcjogIzAwMDtcXG4gIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7XFxuICBvcGFjaXR5OiAuNTsgfVxcbi5jbG9zZTpmb2N1cywgLmNsb3NlOmhvdmVyIHtcXG4gICAgY29sb3I6ICMwMDA7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgb3BhY2l0eTogLjc1OyB9XFxuLmNsb3NlOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKSB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbmJ1dHRvbi5jbG9zZSB7XFxuICBwYWRkaW5nOiAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXI6IDA7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH1cXG4ubW9kYWwtb3BlbiB7XFxuICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuLm1vZGFsIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIHRvcDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHotaW5kZXg6IDEwNTA7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIG91dGxpbmU6IDA7IH1cXG4ubW9kYWwtb3BlbiAubW9kYWwge1xcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XFxuICAgIG92ZXJmbG93LXk6IGF1dG87IH1cXG4ubW9kYWwtZGlhbG9nIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiBhdXRvO1xcbiAgbWFyZ2luOiAwLjVyZW07XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcbi5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2cge1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7XFxuICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7XFxuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0O1xcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLW91dCwgLXdlYmtpdC10cmFuc2Zvcm0gMC4zcyBlYXNlLW91dDtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMjUlKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMjUlKTsgfVxcbi5tb2RhbC5zaG93IC5tb2RhbC1kaWFsb2cge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOyB9XFxuLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIG1pbi1oZWlnaHQ6IGNhbGMoMTAwJSAtICgwLjVyZW0gKiAyKSk7IH1cXG4ubW9kYWwtY29udGVudCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcXG4gIG91dGxpbmU6IDA7IH1cXG4ubW9kYWwtYmFja2Ryb3Age1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogMTA0MDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDA7IH1cXG4ubW9kYWwtYmFja2Ryb3AuZmFkZSB7XFxuICAgIG9wYWNpdHk6IDA7IH1cXG4ubW9kYWwtYmFja2Ryb3Auc2hvdyB7XFxuICAgIG9wYWNpdHk6IDAuNTsgfVxcbi5tb2RhbC1oZWFkZXIge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1hbGlnbjogc3RhcnQ7XFxuICAgICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0O1xcbiAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XFxuICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgcGFkZGluZzogMXJlbTtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTllY2VmO1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4zcmVtO1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuM3JlbTsgfVxcbi5tb2RhbC1oZWFkZXIgLmNsb3NlIHtcXG4gICAgcGFkZGluZzogMXJlbTtcXG4gICAgbWFyZ2luOiAtMXJlbSAtMXJlbSAtMXJlbSBhdXRvOyB9XFxuLm1vZGFsLXRpdGxlIHtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxuICBsaW5lLWhlaWdodDogMS41OyB9XFxuLm1vZGFsLWJvZHkge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xcbiAgcGFkZGluZzogMXJlbTsgfVxcbi5tb2RhbC1mb290ZXIge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XFxuICAgICAgLW1zLWZsZXgtcGFjazogZW5kO1xcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgcGFkZGluZzogMXJlbTtcXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTllY2VmOyB9XFxuLm1vZGFsLWZvb3RlciA+IDpub3QoOmZpcnN0LWNoaWxkKSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAuMjVyZW07IH1cXG4ubW9kYWwtZm9vdGVyID4gOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICBtYXJnaW4tcmlnaHQ6IC4yNXJlbTsgfVxcbi5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IC05OTk5cHg7XFxuICB3aWR0aDogNTBweDtcXG4gIGhlaWdodDogNTBweDtcXG4gIG92ZXJmbG93OiBzY3JvbGw7IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcXG4gIC5tb2RhbC1kaWFsb2cge1xcbiAgICBtYXgtd2lkdGg6IDUwMHB4O1xcbiAgICBtYXJnaW46IDEuNzVyZW0gYXV0bzsgfVxcbiAgLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7XFxuICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwJSAtICgxLjc1cmVtICogMikpOyB9XFxuICAubW9kYWwtc20ge1xcbiAgICBtYXgtd2lkdGg6IDMwMHB4OyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcXG4gIC5tb2RhbC1sZyB7XFxuICAgIG1heC13aWR0aDogODAwcHg7IH0gfVxcbi50b29sdGlwIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDEwNzA7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG1hcmdpbjogMDtcXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgQXJpYWwsIHNhbnMtc2VyaWYsIFxcXCJBcHBsZSBDb2xvciBFbW9qaVxcXCIsIFxcXCJTZWdvZSBVSSBFbW9qaVxcXCIsIFxcXCJTZWdvZSBVSSBTeW1ib2xcXFwiO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICB0ZXh0LXNoYWRvdzogbm9uZTtcXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xcbiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcXG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcXG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcXG4gIGxpbmUtYnJlYWs6IGF1dG87XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xcbiAgb3BhY2l0eTogMDsgfVxcbi50b29sdGlwLnNob3cge1xcbiAgICBvcGFjaXR5OiAwLjk7IH1cXG4udG9vbHRpcCAuYXJyb3cge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB3aWR0aDogMC44cmVtO1xcbiAgICBoZWlnaHQ6IDAuNHJlbTsgfVxcbi50b29sdGlwIC5hcnJvdzo6YmVmb3JlIHtcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgY29udGVudDogXFxcIlxcXCI7XFxuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XFxuLmJzLXRvb2x0aXAtdG9wLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cXFwidG9wXFxcIl0ge1xcbiAgcGFkZGluZzogMC40cmVtIDA7IH1cXG4uYnMtdG9vbHRpcC10b3AgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cXFwidG9wXFxcIl0gLmFycm93IHtcXG4gICAgYm90dG9tOiAwOyB9XFxuLmJzLXRvb2x0aXAtdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cXFwidG9wXFxcIl0gLmFycm93OjpiZWZvcmUge1xcbiAgICAgIHRvcDogMDtcXG4gICAgICBib3JkZXItd2lkdGg6IDAuNHJlbSAwLjRyZW0gMDtcXG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwOyB9XFxuLmJzLXRvb2x0aXAtcmlnaHQsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVxcXCJyaWdodFxcXCJdIHtcXG4gIHBhZGRpbmc6IDAgMC40cmVtOyB9XFxuLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cXFwicmlnaHRcXFwiXSAuYXJyb3cge1xcbiAgICBsZWZ0OiAwO1xcbiAgICB3aWR0aDogMC40cmVtO1xcbiAgICBoZWlnaHQ6IDAuOHJlbTsgfVxcbi5icy10b29sdGlwLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cXFwicmlnaHRcXFwiXSAuYXJyb3c6OmJlZm9yZSB7XFxuICAgICAgcmlnaHQ6IDA7XFxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjRyZW0gMC40cmVtIDAuNHJlbSAwO1xcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzAwMDsgfVxcbi5icy10b29sdGlwLWJvdHRvbSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XFxcImJvdHRvbVxcXCJdIHtcXG4gIHBhZGRpbmc6IDAuNHJlbSAwOyB9XFxuLmJzLXRvb2x0aXAtYm90dG9tIC5hcnJvdywgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XFxcImJvdHRvbVxcXCJdIC5hcnJvdyB7XFxuICAgIHRvcDogMDsgfVxcbi5icy10b29sdGlwLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XFxcImJvdHRvbVxcXCJdIC5hcnJvdzo6YmVmb3JlIHtcXG4gICAgICBib3R0b206IDA7XFxuICAgICAgYm9yZGVyLXdpZHRoOiAwIDAuNHJlbSAwLjRyZW07XFxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAwMDsgfVxcbi5icy10b29sdGlwLWxlZnQsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVxcXCJsZWZ0XFxcIl0ge1xcbiAgcGFkZGluZzogMCAwLjRyZW07IH1cXG4uYnMtdG9vbHRpcC1sZWZ0IC5hcnJvdywgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XFxcImxlZnRcXFwiXSAuYXJyb3cge1xcbiAgICByaWdodDogMDtcXG4gICAgd2lkdGg6IDAuNHJlbTtcXG4gICAgaGVpZ2h0OiAwLjhyZW07IH1cXG4uYnMtdG9vbHRpcC1sZWZ0IC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cXFwibGVmdFxcXCJdIC5hcnJvdzo6YmVmb3JlIHtcXG4gICAgICBsZWZ0OiAwO1xcbiAgICAgIGJvcmRlci13aWR0aDogMC40cmVtIDAgMC40cmVtIDAuNHJlbTtcXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogIzAwMDsgfVxcbi50b29sdGlwLWlubmVyIHtcXG4gIG1heC13aWR0aDogMjAwcHg7XFxuICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cXG4ucG9wb3ZlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogMTA2MDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgbWF4LXdpZHRoOiAyNzZweDtcXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgQXJpYWwsIHNhbnMtc2VyaWYsIFxcXCJBcHBsZSBDb2xvciBFbW9qaVxcXCIsIFxcXCJTZWdvZSBVSSBFbW9qaVxcXCIsIFxcXCJTZWdvZSBVSSBTeW1ib2xcXFwiO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICB0ZXh0LXNoYWRvdzogbm9uZTtcXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xcbiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcXG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcXG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcXG4gIGxpbmUtYnJlYWs6IGF1dG87XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7XFxuICBib3JkZXItcmFkaXVzOiAwLjNyZW07IH1cXG4ucG9wb3ZlciAuYXJyb3cge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB3aWR0aDogMXJlbTtcXG4gICAgaGVpZ2h0OiAwLjVyZW07XFxuICAgIG1hcmdpbjogMCAwLjNyZW07IH1cXG4ucG9wb3ZlciAuYXJyb3c6OmJlZm9yZSwgLnBvcG92ZXIgLmFycm93OjphZnRlciB7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxcbi5icy1wb3BvdmVyLXRvcCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XFxcInRvcFxcXCJdIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTsgfVxcbi5icy1wb3BvdmVyLXRvcCAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJ0b3BcXFwiXSAuYXJyb3cge1xcbiAgICBib3R0b206IGNhbGMoKDAuNXJlbSArIDFweCkgKiAtMSk7IH1cXG4uYnMtcG9wb3Zlci10b3AgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJ0b3BcXFwiXSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJ0b3BcXFwiXSAuYXJyb3c6OmFmdGVyIHtcXG4gICAgYm9yZGVyLXdpZHRoOiAwLjVyZW0gMC41cmVtIDA7IH1cXG4uYnMtcG9wb3Zlci10b3AgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJ0b3BcXFwiXSAuYXJyb3c6OmJlZm9yZSB7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsgfVxcbi5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cXFwidG9wXFxcIl0gLmFycm93OjphZnRlciB7XFxuICAgIGJvdHRvbTogMXB4O1xcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjZmZmOyB9XFxuLmJzLXBvcG92ZXItcmlnaHQsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJyaWdodFxcXCJdIHtcXG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW07IH1cXG4uYnMtcG9wb3Zlci1yaWdodCAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJyaWdodFxcXCJdIC5hcnJvdyB7XFxuICAgIGxlZnQ6IGNhbGMoKDAuNXJlbSArIDFweCkgKiAtMSk7XFxuICAgIHdpZHRoOiAwLjVyZW07XFxuICAgIGhlaWdodDogMXJlbTtcXG4gICAgbWFyZ2luOiAwLjNyZW0gMDsgfVxcbi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cXFwicmlnaHRcXFwiXSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XFxcInJpZ2h0XFxcIl0gLmFycm93OjphZnRlciB7XFxuICAgIGJvcmRlci13aWR0aDogMC41cmVtIDAuNXJlbSAwLjVyZW0gMDsgfVxcbi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cXFwicmlnaHRcXFwiXSAuYXJyb3c6OmJlZm9yZSB7XFxuICAgIGxlZnQ6IDA7XFxuICAgIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsgfVxcbi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJyaWdodFxcXCJdIC5hcnJvdzo6YWZ0ZXIge1xcbiAgICBsZWZ0OiAxcHg7XFxuICAgIGJvcmRlci1yaWdodC1jb2xvcjogI2ZmZjsgfVxcbi5icy1wb3BvdmVyLWJvdHRvbSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XFxcImJvdHRvbVxcXCJdIHtcXG4gIG1hcmdpbi10b3A6IDAuNXJlbTsgfVxcbi5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJib3R0b21cXFwiXSAuYXJyb3cge1xcbiAgICB0b3A6IGNhbGMoKDAuNXJlbSArIDFweCkgKiAtMSk7IH1cXG4uYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJib3R0b21cXFwiXSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJib3R0b21cXFwiXSAuYXJyb3c6OmFmdGVyIHtcXG4gICAgYm9yZGVyLXdpZHRoOiAwIDAuNXJlbSAwLjVyZW0gMC41cmVtOyB9XFxuLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cXFwiYm90dG9tXFxcIl0gLmFycm93OjpiZWZvcmUge1xcbiAgICB0b3A6IDA7XFxuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7IH1cXG4uYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XFxcImJvdHRvbVxcXCJdIC5hcnJvdzo6YWZ0ZXIge1xcbiAgICB0b3A6IDFweDtcXG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsgfVxcbi5icy1wb3BvdmVyLWJvdHRvbSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XFxcImJvdHRvbVxcXCJdIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDUwJTtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIHdpZHRoOiAxcmVtO1xcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbTtcXG4gICAgY29udGVudDogXFxcIlxcXCI7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjdmN2Y3OyB9XFxuLmJzLXBvcG92ZXItbGVmdCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XFxcImxlZnRcXFwiXSB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsgfVxcbi5icy1wb3BvdmVyLWxlZnQgLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cXFwibGVmdFxcXCJdIC5hcnJvdyB7XFxuICAgIHJpZ2h0OiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpO1xcbiAgICB3aWR0aDogMC41cmVtO1xcbiAgICBoZWlnaHQ6IDFyZW07XFxuICAgIG1hcmdpbjogMC4zcmVtIDA7IH1cXG4uYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cXFwibGVmdFxcXCJdIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJsZWZ0XFxcIl0gLmFycm93OjphZnRlciB7XFxuICAgIGJvcmRlci13aWR0aDogMC41cmVtIDAgMC41cmVtIDAuNXJlbTsgfVxcbi5icy1wb3BvdmVyLWxlZnQgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJsZWZ0XFxcIl0gLmFycm93OjpiZWZvcmUge1xcbiAgICByaWdodDogMDtcXG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7IH1cXG4uYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVxcXCJsZWZ0XFxcIl0gLmFycm93OjphZnRlciB7XFxuICAgIHJpZ2h0OiAxcHg7XFxuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmZmOyB9XFxuLnBvcG92ZXItaGVhZGVyIHtcXG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMDtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViO1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpO1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGMoMC4zcmVtIC0gMXB4KTsgfVxcbi5wb3BvdmVyLWhlYWRlcjplbXB0eSB7XFxuICAgIGRpc3BsYXk6IG5vbmU7IH1cXG4ucG9wb3Zlci1ib2R5IHtcXG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xcbiAgY29sb3I6ICMyMTI1Mjk7IH1cXG4uY2Fyb3VzZWwge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XFxuLmNhcm91c2VsLWlubmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbi5jYXJvdXNlbC1pdGVtIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICB3aWR0aDogMTAwJTtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC42cyBlYXNlO1xcbiAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC42cyBlYXNlO1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNnMgZWFzZTtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjZzIGVhc2UsIC13ZWJraXQtdHJhbnNmb3JtIDAuNnMgZWFzZTtcXG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XFxuICAtd2Via2l0LXBlcnNwZWN0aXZlOiAxMDAwcHg7XFxuICAgICAgICAgIHBlcnNwZWN0aXZlOiAxMDAwcHg7IH1cXG4uY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1pdGVtLW5leHQsIC5jYXJvdXNlbC1pdGVtLXByZXYge1xcbiAgZGlzcGxheTogYmxvY2s7IH1cXG4uY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDsgfVxcbi5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQge1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfVxcbkBzdXBwb3J0cyAoKC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpKSB7XFxuICAgIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQge1xcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7IH0gfVxcbi5jYXJvdXNlbC1pdGVtLW5leHQsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOyB9XFxuQHN1cHBvcnRzICgoLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSBvciAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkpIHtcXG4gICAgLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHtcXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XFxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOyB9IH1cXG4uY2Fyb3VzZWwtaXRlbS1wcmV2LCAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCB7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XFxuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7IH1cXG5Ac3VwcG9ydHMgKCgtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpIG9yICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSkge1xcbiAgICAuY2Fyb3VzZWwtaXRlbS1wcmV2LCAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCB7XFxuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApOyB9IH1cXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2LCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB3aWR0aDogMTUlO1xcbiAgY29sb3I6ICNmZmY7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBvcGFjaXR5OiAwLjU7IH1cXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2OmZvY3VzLCAuY2Fyb3VzZWwtY29udHJvbC1wcmV2OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmZvY3VzLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmhvdmVyIHtcXG4gICAgY29sb3I6ICNmZmY7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgb3V0bGluZTogMDtcXG4gICAgb3BhY2l0eTogLjk7IH1cXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2IHtcXG4gIGxlZnQ6IDA7IH1cXG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0IHtcXG4gIHJpZ2h0OiAwOyB9XFxuLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcXG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOyB9XFxuLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNmZmYnIHZpZXdCb3g9JzAgMCA4IDgnJTNFJTNDcGF0aCBkPSdNNS4yNSAwbC00IDQgNCA0IDEuNS0xLjUtMi41LTIuNSAyLjUtMi41LTEuNS0xLjV6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7IH1cXG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24ge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2ZmZicgdmlld0JveD0nMCAwIDggOCclM0UlM0NwYXRoIGQ9J00yLjc1IDBsLTEuNSAxLjUgMi41IDIuNS0yLjUgMi41IDEuNSAxLjUgNC00LTQtNHonLyUzRSUzQy9zdmclM0VcXFwiKTsgfVxcbi5jYXJvdXNlbC1pbmRpY2F0b3JzIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAxMHB4O1xcbiAgbGVmdDogMDtcXG4gIHotaW5kZXg6IDE1O1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIHBhZGRpbmctbGVmdDogMDtcXG4gIG1hcmdpbi1yaWdodDogMTUlO1xcbiAgbWFyZ2luLWxlZnQ6IDE1JTtcXG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cXG4uY2Fyb3VzZWwtaW5kaWNhdG9ycyBsaSB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiAwIDEgYXV0bztcXG4gICAgICAgICAgICBmbGV4OiAwIDEgYXV0bztcXG4gICAgd2lkdGg6IDMwcHg7XFxuICAgIGhlaWdodDogM3B4O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDNweDtcXG4gICAgbWFyZ2luLWxlZnQ6IDNweDtcXG4gICAgdGV4dC1pbmRlbnQ6IC05OTlweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XFxuLmNhcm91c2VsLWluZGljYXRvcnMgbGk6OmJlZm9yZSB7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIHRvcDogLTEwcHg7XFxuICAgICAgbGVmdDogMDtcXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgaGVpZ2h0OiAxMHB4O1xcbiAgICAgIGNvbnRlbnQ6IFxcXCJcXFwiOyB9XFxuLmNhcm91c2VsLWluZGljYXRvcnMgbGk6OmFmdGVyIHtcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgYm90dG9tOiAtMTBweDtcXG4gICAgICBsZWZ0OiAwO1xcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBoZWlnaHQ6IDEwcHg7XFxuICAgICAgY29udGVudDogXFxcIlxcXCI7IH1cXG4uY2Fyb3VzZWwtaW5kaWNhdG9ycyAuYWN0aXZlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxcbi5jYXJvdXNlbC1jYXB0aW9uIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAxNSU7XFxuICBib3R0b206IDIwcHg7XFxuICBsZWZ0OiAxNSU7XFxuICB6LWluZGV4OiAxMDtcXG4gIHBhZGRpbmctdG9wOiAyMHB4O1xcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XFxuICBjb2xvcjogI2ZmZjtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcbi5hbGlnbi1iYXNlbGluZSB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxcbi5hbGlnbi10b3Age1xcbiAgdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50OyB9XFxuLmFsaWduLW1pZGRsZSB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7IH1cXG4uYWxpZ24tYm90dG9tIHtcXG4gIHZlcnRpY2FsLWFsaWduOiBib3R0b20gIWltcG9ydGFudDsgfVxcbi5hbGlnbi10ZXh0LWJvdHRvbSB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudDsgfVxcbi5hbGlnbi10ZXh0LXRvcCB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AgIWltcG9ydGFudDsgfVxcbi5iZy1wcmltYXJ5IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmYgIWltcG9ydGFudDsgfVxcbmEuYmctcHJpbWFyeTpmb2N1cywgYS5iZy1wcmltYXJ5OmhvdmVyLCBidXR0b24uYmctcHJpbWFyeTpmb2N1cywgYnV0dG9uLmJnLXByaW1hcnk6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYyAhaW1wb3J0YW50OyB9XFxuLmJnLXNlY29uZGFyeSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODY4ZTk2ICFpbXBvcnRhbnQ7IH1cXG5hLmJnLXNlY29uZGFyeTpmb2N1cywgYS5iZy1zZWNvbmRhcnk6aG92ZXIsIGJ1dHRvbi5iZy1zZWNvbmRhcnk6Zm9jdXMsIGJ1dHRvbi5iZy1zZWNvbmRhcnk6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50OyB9XFxuLmJnLXN1Y2Nlc3Mge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50OyB9XFxuYS5iZy1zdWNjZXNzOmZvY3VzLCBhLmJnLXN1Y2Nlc3M6aG92ZXIsIGJ1dHRvbi5iZy1zdWNjZXNzOmZvY3VzLCBidXR0b24uYmctc3VjY2Vzczpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7IH1cXG4uYmctaW5mbyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7IH1cXG5hLmJnLWluZm86Zm9jdXMsIGEuYmctaW5mbzpob3ZlciwgYnV0dG9uLmJnLWluZm86Zm9jdXMsIGJ1dHRvbi5iZy1pbmZvOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsgfVxcbi5iZy13YXJuaW5nIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsgfVxcbmEuYmctd2FybmluZzpmb2N1cywgYS5iZy13YXJuaW5nOmhvdmVyLCBidXR0b24uYmctd2FybmluZzpmb2N1cywgYnV0dG9uLmJnLXdhcm5pbmc6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMCAhaW1wb3J0YW50OyB9XFxuLmJnLWRhbmdlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7IH1cXG5hLmJnLWRhbmdlcjpmb2N1cywgYS5iZy1kYW5nZXI6aG92ZXIsIGJ1dHRvbi5iZy1kYW5nZXI6Zm9jdXMsIGJ1dHRvbi5iZy1kYW5nZXI6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMCAhaW1wb3J0YW50OyB9XFxuLmJnLWxpZ2h0IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsgfVxcbmEuYmctbGlnaHQ6Zm9jdXMsIGEuYmctbGlnaHQ6aG92ZXIsIGJ1dHRvbi5iZy1saWdodDpmb2N1cywgYnV0dG9uLmJnLWxpZ2h0OmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsgfVxcbi5iZy1kYXJrIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsgfVxcbmEuYmctZGFyazpmb2N1cywgYS5iZy1kYXJrOmhvdmVyLCBidXR0b24uYmctZGFyazpmb2N1cywgYnV0dG9uLmJnLWRhcms6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkMjEyNCAhaW1wb3J0YW50OyB9XFxuLmJnLXdoaXRlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfVxcbi5iZy10cmFuc3BhcmVudCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyB9XFxuLmJvcmRlciB7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZTllY2VmICFpbXBvcnRhbnQ7IH1cXG4uYm9yZGVyLTAge1xcbiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7IH1cXG4uYm9yZGVyLXRvcC0wIHtcXG4gIGJvcmRlci10b3A6IDAgIWltcG9ydGFudDsgfVxcbi5ib3JkZXItcmlnaHQtMCB7XFxuICBib3JkZXItcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxcbi5ib3JkZXItYm90dG9tLTAge1xcbiAgYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XFxuLmJvcmRlci1sZWZ0LTAge1xcbiAgYm9yZGVyLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxcbi5ib3JkZXItcHJpbWFyeSB7XFxuICBib3JkZXItY29sb3I6ICMwMDdiZmYgIWltcG9ydGFudDsgfVxcbi5ib3JkZXItc2Vjb25kYXJ5IHtcXG4gIGJvcmRlci1jb2xvcjogIzg2OGU5NiAhaW1wb3J0YW50OyB9XFxuLmJvcmRlci1zdWNjZXNzIHtcXG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50OyB9XFxuLmJvcmRlci1pbmZvIHtcXG4gIGJvcmRlci1jb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50OyB9XFxuLmJvcmRlci13YXJuaW5nIHtcXG4gIGJvcmRlci1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50OyB9XFxuLmJvcmRlci1kYW5nZXIge1xcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7IH1cXG4uYm9yZGVyLWxpZ2h0IHtcXG4gIGJvcmRlci1jb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50OyB9XFxuLmJvcmRlci1kYXJrIHtcXG4gIGJvcmRlci1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50OyB9XFxuLmJvcmRlci13aGl0ZSB7XFxuICBib3JkZXItY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfVxcbi5yb3VuZGVkIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbi5yb3VuZGVkLXRvcCB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuLnJvdW5kZWQtcmlnaHQge1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4ucm91bmRlZC1ib3R0b20ge1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbi5yb3VuZGVkLWxlZnQge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuLnJvdW5kZWQtY2lyY2xlIHtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50OyB9XFxuLnJvdW5kZWQtMCB7XFxuICBib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7IH1cXG4uY2xlYXJmaXg6OmFmdGVyIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgY2xlYXI6IGJvdGg7XFxuICBjb250ZW50OiBcXFwiXFxcIjsgfVxcbi5kLW5vbmUge1xcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XFxuLmQtaW5saW5lIHtcXG4gIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XFxuLmQtaW5saW5lLWJsb2NrIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9XFxuLmQtYmxvY2sge1xcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxcbi5kLXRhYmxlIHtcXG4gIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cXG4uZC10YWJsZS1yb3cge1xcbiAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH1cXG4uZC10YWJsZS1jZWxsIHtcXG4gIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxcbi5kLWZsZXgge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3ggIWltcG9ydGFudDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7XFxuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IH1cXG4uZC1pbmxpbmUtZmxleCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3ggIWltcG9ydGFudDtcXG4gIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50O1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfVxcbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xcbiAgLmQtc20tbm9uZSB7XFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxcbiAgLmQtc20taW5saW5lIHtcXG4gICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cXG4gIC5kLXNtLWlubGluZS1ibG9jayB7XFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9XFxuICAuZC1zbS1ibG9jayB7XFxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cXG4gIC5kLXNtLXRhYmxlIHtcXG4gICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsgfVxcbiAgLmQtc20tdGFibGUtcm93IHtcXG4gICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH1cXG4gIC5kLXNtLXRhYmxlLWNlbGwge1xcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH1cXG4gIC5kLXNtLWZsZXgge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveCAhaW1wb3J0YW50O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50O1xcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IH1cXG4gIC5kLXNtLWlubGluZS1mbGV4IHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94ICFpbXBvcnRhbnQ7XFxuICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50O1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcXG4gIC5kLW1kLW5vbmUge1xcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cXG4gIC5kLW1kLWlubGluZSB7XFxuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XFxuICAuZC1tZC1pbmxpbmUtYmxvY2sge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgfVxcbiAgLmQtbWQtYmxvY2sge1xcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XFxuICAuZC1tZC10YWJsZSB7XFxuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cXG4gIC5kLW1kLXRhYmxlLXJvdyB7XFxuICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OyB9XFxuICAuZC1tZC10YWJsZS1jZWxsIHtcXG4gICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XFxuICAuZC1tZC1mbGV4IHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3ggIWltcG9ydGFudDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDtcXG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XFxuICAuZC1tZC1pbmxpbmUtZmxleCB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveCAhaW1wb3J0YW50O1xcbiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDtcXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfSB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XFxuICAuZC1sZy1ub25lIHtcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XFxuICAuZC1sZy1pbmxpbmUge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxcbiAgLmQtbGctaW5saW5lLWJsb2NrIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7IH1cXG4gIC5kLWxnLWJsb2NrIHtcXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxcbiAgLmQtbGctdGFibGUge1xcbiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9XFxuICAuZC1sZy10YWJsZS1yb3cge1xcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsgfVxcbiAgLmQtbGctdGFibGUtY2VsbCB7XFxuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxcbiAgLmQtbGctZmxleCB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94ICFpbXBvcnRhbnQ7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7XFxuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgfVxcbiAgLmQtbGctaW5saW5lLWZsZXgge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3ggIWltcG9ydGFudDtcXG4gICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7XFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7IH0gfVxcbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcXG4gIC5kLXhsLW5vbmUge1xcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cXG4gIC5kLXhsLWlubGluZSB7XFxuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XFxuICAuZC14bC1pbmxpbmUtYmxvY2sge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgfVxcbiAgLmQteGwtYmxvY2sge1xcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XFxuICAuZC14bC10YWJsZSB7XFxuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cXG4gIC5kLXhsLXRhYmxlLXJvdyB7XFxuICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OyB9XFxuICAuZC14bC10YWJsZS1jZWxsIHtcXG4gICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XFxuICAuZC14bC1mbGV4IHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3ggIWltcG9ydGFudDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDtcXG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XFxuICAuZC14bC1pbmxpbmUtZmxleCB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveCAhaW1wb3J0YW50O1xcbiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDtcXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfSB9XFxuLmQtcHJpbnQtYmxvY2sge1xcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XFxuQG1lZGlhIHByaW50IHtcXG4gICAgLmQtcHJpbnQtYmxvY2sge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0gfVxcbi5kLXByaW50LWlubGluZSB7XFxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cXG5AbWVkaWEgcHJpbnQge1xcbiAgICAuZC1wcmludC1pbmxpbmUge1xcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9IH1cXG4uZC1wcmludC1pbmxpbmUtYmxvY2sge1xcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XFxuQG1lZGlhIHByaW50IHtcXG4gICAgLmQtcHJpbnQtaW5saW5lLWJsb2NrIHtcXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgfSB9XFxuQG1lZGlhIHByaW50IHtcXG4gIC5kLXByaW50LW5vbmUge1xcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxcbi5lbWJlZC1yZXNwb25zaXZlIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBwYWRkaW5nOiAwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbi5lbWJlZC1yZXNwb25zaXZlOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgY29udGVudDogXFxcIlxcXCI7IH1cXG4uZW1iZWQtcmVzcG9uc2l2ZSAuZW1iZWQtcmVzcG9uc2l2ZS1pdGVtLCAuZW1iZWQtcmVzcG9uc2l2ZSBpZnJhbWUsIC5lbWJlZC1yZXNwb25zaXZlIGVtYmVkLCAuZW1iZWQtcmVzcG9uc2l2ZSBvYmplY3QsIC5lbWJlZC1yZXNwb25zaXZlIHZpZGVvIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgYm9yZGVyOiAwOyB9XFxuLmVtYmVkLXJlc3BvbnNpdmUtMjFieTk6OmJlZm9yZSB7XFxuICBwYWRkaW5nLXRvcDogNDIuODU3MTQlOyB9XFxuLmVtYmVkLXJlc3BvbnNpdmUtMTZieTk6OmJlZm9yZSB7XFxuICBwYWRkaW5nLXRvcDogNTYuMjUlOyB9XFxuLmVtYmVkLXJlc3BvbnNpdmUtNGJ5Mzo6YmVmb3JlIHtcXG4gIHBhZGRpbmctdG9wOiA3NSU7IH1cXG4uZW1iZWQtcmVzcG9uc2l2ZS0xYnkxOjpiZWZvcmUge1xcbiAgcGFkZGluZy10b3A6IDEwMCU7IH1cXG4uZmxleC1yb3cge1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsICFpbXBvcnRhbnQ7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbCAhaW1wb3J0YW50O1xcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7XFxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsgfVxcbi5mbGV4LWNvbHVtbiB7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsICFpbXBvcnRhbnQ7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbCAhaW1wb3J0YW50O1xcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7XFxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgfVxcbi5mbGV4LXJvdy1yZXZlcnNlIHtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhaW1wb3J0YW50O1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlICFpbXBvcnRhbnQ7XFxuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsgfVxcbi5mbGV4LWNvbHVtbi1yZXZlcnNlIHtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWwgIWltcG9ydGFudDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZSAhaW1wb3J0YW50O1xcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDtcXG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cXG4uZmxleC13cmFwIHtcXG4gIC1tcy1mbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDtcXG4gICAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsgfVxcbi5mbGV4LW5vd3JhcCB7XFxuICAtbXMtZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDtcXG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OyB9XFxuLmZsZXgtd3JhcC1yZXZlcnNlIHtcXG4gIC1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50O1xcbiAgICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cXG4uanVzdGlmeS1jb250ZW50LXN0YXJ0IHtcXG4gIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cXG4uanVzdGlmeS1jb250ZW50LWVuZCB7XFxuICAtd2Via2l0LWJveC1wYWNrOiBlbmQgIWltcG9ydGFudDtcXG4gICAgICAtbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDtcXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XFxuLmp1c3RpZnktY29udGVudC1jZW50ZXIge1xcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cXG4uanVzdGlmeS1jb250ZW50LWJldHdlZW4ge1xcbiAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeSAhaW1wb3J0YW50O1xcbiAgICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDtcXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cXG4uanVzdGlmeS1jb250ZW50LWFyb3VuZCB7XFxuICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7XFxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxcbi5hbGlnbi1pdGVtcy1zdGFydCB7XFxuICAtd2Via2l0LWJveC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxcbi5hbGlnbi1pdGVtcy1lbmQge1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZCAhaW1wb3J0YW50O1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDtcXG4gICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cXG4uYWxpZ24taXRlbXMtY2VudGVyIHtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgfVxcbi5hbGlnbi1pdGVtcy1iYXNlbGluZSB7XFxuICAtd2Via2l0LWJveC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDtcXG4gICAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cXG4uYWxpZ24taXRlbXMtc3RyZXRjaCB7XFxuICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50O1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7XFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cXG4uYWxpZ24tY29udGVudC1zdGFydCB7XFxuICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XFxuLmFsaWduLWNvbnRlbnQtZW5kIHtcXG4gIC1tcy1mbGV4LWxpbmUtcGFjazogZW5kICFpbXBvcnRhbnQ7XFxuICAgICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxcbi5hbGlnbi1jb250ZW50LWNlbnRlciB7XFxuICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50O1xcbiAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XFxuLmFsaWduLWNvbnRlbnQtYmV0d2VlbiB7XFxuICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDtcXG4gICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cXG4uYWxpZ24tY29udGVudC1hcm91bmQge1xcbiAgLW1zLWZsZXgtbGluZS1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7XFxuICAgICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cXG4uYWxpZ24tY29udGVudC1zdHJldGNoIHtcXG4gIC1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50O1xcbiAgICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsgfVxcbi5hbGlnbi1zZWxmLWF1dG8ge1xcbiAgLW1zLWZsZXgtaXRlbS1hbGlnbjogYXV0byAhaW1wb3J0YW50O1xcbiAgICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsgfVxcbi5hbGlnbi1zZWxmLXN0YXJ0IHtcXG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XFxuLmFsaWduLXNlbGYtZW5kIHtcXG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50O1xcbiAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cXG4uYWxpZ24tc2VsZi1jZW50ZXIge1xcbiAgLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7IH1cXG4uYWxpZ24tc2VsZi1iYXNlbGluZSB7XFxuICAtbXMtZmxleC1pdGVtLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50O1xcbiAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cXG4uYWxpZ24tc2VsZi1zdHJldGNoIHtcXG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDtcXG4gICAgICBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcXG4gIC5mbGV4LXNtLXJvdyB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhaW1wb3J0YW50O1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7IH1cXG4gIC5mbGV4LXNtLWNvbHVtbiB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWwgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWwgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyB9XFxuICAuZmxleC1zbS1yb3ctcmV2ZXJzZSB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhaW1wb3J0YW50O1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2UgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsgfVxcbiAgLmZsZXgtc20tY29sdW1uLXJldmVyc2Uge1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZSAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OyB9XFxuICAuZmxleC1zbS13cmFwIHtcXG4gICAgLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50O1xcbiAgICAgICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IH1cXG4gIC5mbGV4LXNtLW5vd3JhcCB7XFxuICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50O1xcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsgfVxcbiAgLmZsZXgtc20td3JhcC1yZXZlcnNlIHtcXG4gICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7XFxuICAgICAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OyB9XFxuICAuanVzdGlmeS1jb250ZW50LXNtLXN0YXJ0IHtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cXG4gIC5qdXN0aWZ5LWNvbnRlbnQtc20tZW5kIHtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogZW5kICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cXG4gIC5qdXN0aWZ5LWNvbnRlbnQtc20tY2VudGVyIHtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XFxuICAuanVzdGlmeS1jb250ZW50LXNtLWJldHdlZW4ge1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cXG4gIC5qdXN0aWZ5LWNvbnRlbnQtc20tYXJvdW5kIHtcXG4gICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50O1xcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWl0ZW1zLXNtLXN0YXJ0IHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24taXRlbXMtc20tZW5kIHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGVuZCAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24taXRlbXMtc20tY2VudGVyIHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWl0ZW1zLXNtLWJhc2VsaW5lIHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWl0ZW1zLXNtLXN0cmV0Y2gge1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tY29udGVudC1zbS1zdGFydCB7XFxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWNvbnRlbnQtc20tZW5kIHtcXG4gICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1jb250ZW50LXNtLWNlbnRlciB7XFxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWNvbnRlbnQtc20tYmV0d2VlbiB7XFxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50O1xcbiAgICAgICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tY29udGVudC1zbS1hcm91bmQge1xcbiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tY29udGVudC1zbS1zdHJldGNoIHtcXG4gICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1zZWxmLXNtLWF1dG8ge1xcbiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1zZWxmLXNtLXN0YXJ0IHtcXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLXNlbGYtc20tZW5kIHtcXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tc2VsZi1zbS1jZW50ZXIge1xcbiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tc2VsZi1zbS1iYXNlbGluZSB7XFxuICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tc2VsZi1zbS1zdHJldGNoIHtcXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50O1xcbiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcXG4gIC5mbGV4LW1kLXJvdyB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhaW1wb3J0YW50O1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7IH1cXG4gIC5mbGV4LW1kLWNvbHVtbiB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWwgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWwgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyB9XFxuICAuZmxleC1tZC1yb3ctcmV2ZXJzZSB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhaW1wb3J0YW50O1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2UgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsgfVxcbiAgLmZsZXgtbWQtY29sdW1uLXJldmVyc2Uge1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZSAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OyB9XFxuICAuZmxleC1tZC13cmFwIHtcXG4gICAgLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50O1xcbiAgICAgICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IH1cXG4gIC5mbGV4LW1kLW5vd3JhcCB7XFxuICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50O1xcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsgfVxcbiAgLmZsZXgtbWQtd3JhcC1yZXZlcnNlIHtcXG4gICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7XFxuICAgICAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OyB9XFxuICAuanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0IHtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cXG4gIC5qdXN0aWZ5LWNvbnRlbnQtbWQtZW5kIHtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogZW5kICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cXG4gIC5qdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyIHtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XFxuICAuanVzdGlmeS1jb250ZW50LW1kLWJldHdlZW4ge1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cXG4gIC5qdXN0aWZ5LWNvbnRlbnQtbWQtYXJvdW5kIHtcXG4gICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50O1xcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWl0ZW1zLW1kLXN0YXJ0IHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24taXRlbXMtbWQtZW5kIHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGVuZCAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24taXRlbXMtbWQtY2VudGVyIHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWl0ZW1zLW1kLWJhc2VsaW5lIHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWl0ZW1zLW1kLXN0cmV0Y2gge1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tY29udGVudC1tZC1zdGFydCB7XFxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWNvbnRlbnQtbWQtZW5kIHtcXG4gICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1jb250ZW50LW1kLWNlbnRlciB7XFxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWNvbnRlbnQtbWQtYmV0d2VlbiB7XFxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50O1xcbiAgICAgICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tY29udGVudC1tZC1hcm91bmQge1xcbiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tY29udGVudC1tZC1zdHJldGNoIHtcXG4gICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1zZWxmLW1kLWF1dG8ge1xcbiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1zZWxmLW1kLXN0YXJ0IHtcXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLXNlbGYtbWQtZW5kIHtcXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tc2VsZi1tZC1jZW50ZXIge1xcbiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tc2VsZi1tZC1iYXNlbGluZSB7XFxuICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tc2VsZi1tZC1zdHJldGNoIHtcXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50O1xcbiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcXG4gIC5mbGV4LWxnLXJvdyB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhaW1wb3J0YW50O1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7IH1cXG4gIC5mbGV4LWxnLWNvbHVtbiB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWwgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWwgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyB9XFxuICAuZmxleC1sZy1yb3ctcmV2ZXJzZSB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhaW1wb3J0YW50O1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2UgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsgfVxcbiAgLmZsZXgtbGctY29sdW1uLXJldmVyc2Uge1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZSAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OyB9XFxuICAuZmxleC1sZy13cmFwIHtcXG4gICAgLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50O1xcbiAgICAgICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IH1cXG4gIC5mbGV4LWxnLW5vd3JhcCB7XFxuICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50O1xcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsgfVxcbiAgLmZsZXgtbGctd3JhcC1yZXZlcnNlIHtcXG4gICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7XFxuICAgICAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OyB9XFxuICAuanVzdGlmeS1jb250ZW50LWxnLXN0YXJ0IHtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cXG4gIC5qdXN0aWZ5LWNvbnRlbnQtbGctZW5kIHtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogZW5kICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cXG4gIC5qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIHtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XFxuICAuanVzdGlmeS1jb250ZW50LWxnLWJldHdlZW4ge1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cXG4gIC5qdXN0aWZ5LWNvbnRlbnQtbGctYXJvdW5kIHtcXG4gICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50O1xcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWl0ZW1zLWxnLXN0YXJ0IHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24taXRlbXMtbGctZW5kIHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGVuZCAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24taXRlbXMtbGctY2VudGVyIHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWl0ZW1zLWxnLXN0cmV0Y2gge1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tY29udGVudC1sZy1zdGFydCB7XFxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWNvbnRlbnQtbGctZW5kIHtcXG4gICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1jb250ZW50LWxnLWNlbnRlciB7XFxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWNvbnRlbnQtbGctYmV0d2VlbiB7XFxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50O1xcbiAgICAgICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tY29udGVudC1sZy1hcm91bmQge1xcbiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tY29udGVudC1sZy1zdHJldGNoIHtcXG4gICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1zZWxmLWxnLWF1dG8ge1xcbiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1zZWxmLWxnLXN0YXJ0IHtcXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLXNlbGYtbGctZW5kIHtcXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tc2VsZi1sZy1jZW50ZXIge1xcbiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tc2VsZi1sZy1iYXNlbGluZSB7XFxuICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tc2VsZi1sZy1zdHJldGNoIHtcXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50O1xcbiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XFxuICAuZmxleC14bC1yb3cge1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWwgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWwgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OyB9XFxuICAuZmxleC14bC1jb2x1bW4ge1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgfVxcbiAgLmZsZXgteGwtcm93LXJldmVyc2Uge1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWwgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cXG4gIC5mbGV4LXhsLWNvbHVtbi1yZXZlcnNlIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbCAhaW1wb3J0YW50O1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2UgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsgfVxcbiAgLmZsZXgteGwtd3JhcCB7XFxuICAgIC1tcy1mbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDtcXG4gICAgICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OyB9XFxuICAuZmxleC14bC1ub3dyYXAge1xcbiAgICAtbXMtZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDtcXG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7IH1cXG4gIC5mbGV4LXhsLXdyYXAtcmV2ZXJzZSB7XFxuICAgIC1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50O1xcbiAgICAgICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsgfVxcbiAgLmp1c3RpZnktY29udGVudC14bC1zdGFydCB7XFxuICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydCAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XFxuICAuanVzdGlmeS1jb250ZW50LXhsLWVuZCB7XFxuICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XFxuICAuanVzdGlmeS1jb250ZW50LXhsLWNlbnRlciB7XFxuICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlciAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxcbiAgLmp1c3RpZnktY29udGVudC14bC1iZXR3ZWVuIHtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeSAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9XFxuICAuanVzdGlmeS1jb250ZW50LXhsLWFyb3VuZCB7XFxuICAgIC1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDtcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1pdGVtcy14bC1zdGFydCB7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBzdGFydCAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWl0ZW1zLXhsLWVuZCB7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBlbmQgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWl0ZW1zLXhsLWNlbnRlciB7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1pdGVtcy14bC1iYXNlbGluZSB7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50O1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1pdGVtcy14bC1zdHJldGNoIHtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDtcXG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWNvbnRlbnQteGwtc3RhcnQge1xcbiAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1jb250ZW50LXhsLWVuZCB7XFxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZW5kICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tY29udGVudC14bC1jZW50ZXIge1xcbiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50O1xcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1jb250ZW50LXhsLWJldHdlZW4ge1xcbiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWNvbnRlbnQteGwtYXJvdW5kIHtcXG4gICAgLW1zLWZsZXgtbGluZS1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLWNvbnRlbnQteGwtc3RyZXRjaCB7XFxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50O1xcbiAgICAgICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tc2VsZi14bC1hdXRvIHtcXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogYXV0byAhaW1wb3J0YW50O1xcbiAgICAgICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OyB9XFxuICAuYWxpZ24tc2VsZi14bC1zdGFydCB7XFxuICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cXG4gIC5hbGlnbi1zZWxmLXhsLWVuZCB7XFxuICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50O1xcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLXNlbGYteGwtY2VudGVyIHtcXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XFxuICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLXNlbGYteGwtYmFzZWxpbmUge1xcbiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50O1xcbiAgICAgICAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxcbiAgLmFsaWduLXNlbGYteGwtc3RyZXRjaCB7XFxuICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDtcXG4gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsgfSB9XFxuLmZsb2F0LWxlZnQge1xcbiAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfVxcbi5mbG9hdC1yaWdodCB7XFxuICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsgfVxcbi5mbG9hdC1ub25lIHtcXG4gIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcXG4gIC5mbG9hdC1zbS1sZWZ0IHtcXG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfVxcbiAgLmZsb2F0LXNtLXJpZ2h0IHtcXG4gICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cXG4gIC5mbG9hdC1zbS1ub25lIHtcXG4gICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsgfSB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XFxuICAuZmxvYXQtbWQtbGVmdCB7XFxuICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7IH1cXG4gIC5mbG9hdC1tZC1yaWdodCB7XFxuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OyB9XFxuICAuZmxvYXQtbWQtbm9uZSB7XFxuICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH0gfVxcbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xcbiAgLmZsb2F0LWxnLWxlZnQge1xcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OyB9XFxuICAuZmxvYXQtbGctcmlnaHQge1xcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsgfVxcbiAgLmZsb2F0LWxnLW5vbmUge1xcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XFxuICAuZmxvYXQteGwtbGVmdCB7XFxuICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7IH1cXG4gIC5mbG9hdC14bC1yaWdodCB7XFxuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OyB9XFxuICAuZmxvYXQteGwtbm9uZSB7XFxuICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH0gfVxcbi5wb3NpdGlvbi1zdGF0aWMge1xcbiAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50OyB9XFxuLnBvc2l0aW9uLXJlbGF0aXZlIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OyB9XFxuLnBvc2l0aW9uLWFic29sdXRlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyB9XFxuLnBvc2l0aW9uLWZpeGVkIHtcXG4gIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50OyB9XFxuLnBvc2l0aW9uLXN0aWNreSB7XFxuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3kgIWltcG9ydGFudDtcXG4gIHBvc2l0aW9uOiBzdGlja3kgIWltcG9ydGFudDsgfVxcbi5maXhlZC10b3Age1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogMTAzMDsgfVxcbi5maXhlZC1ib3R0b20ge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgcmlnaHQ6IDA7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogMTAzMDsgfVxcbkBzdXBwb3J0cyAoKHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreSkgb3IgKHBvc2l0aW9uOiBzdGlja3kpKSB7XFxuICAuc3RpY2t5LXRvcCB7XFxuICAgIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTtcXG4gICAgcG9zaXRpb246IHN0aWNreTtcXG4gICAgdG9wOiAwO1xcbiAgICB6LWluZGV4OiAxMDIwOyB9IH1cXG4uc3Itb25seSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMXB4O1xcbiAgaGVpZ2h0OiAxcHg7XFxuICBwYWRkaW5nOiAwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgLXdlYmtpdC1jbGlwLXBhdGg6IGluc2V0KDUwJSk7XFxuICAgICAgICAgIGNsaXAtcGF0aDogaW5zZXQoNTAlKTtcXG4gIGJvcmRlcjogMDsgfVxcbi5zci1vbmx5LWZvY3VzYWJsZTphY3RpdmUsIC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1cyB7XFxuICBwb3NpdGlvbjogc3RhdGljO1xcbiAgd2lkdGg6IGF1dG87XFxuICBoZWlnaHQ6IGF1dG87XFxuICBvdmVyZmxvdzogdmlzaWJsZTtcXG4gIGNsaXA6IGF1dG87XFxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xcbiAgLXdlYmtpdC1jbGlwLXBhdGg6IG5vbmU7XFxuICAgICAgICAgIGNsaXAtcGF0aDogbm9uZTsgfVxcbi53LTI1IHtcXG4gIHdpZHRoOiAyNSUgIWltcG9ydGFudDsgfVxcbi53LTUwIHtcXG4gIHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfVxcbi53LTc1IHtcXG4gIHdpZHRoOiA3NSUgIWltcG9ydGFudDsgfVxcbi53LTEwMCB7XFxuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XFxuLmgtMjUge1xcbiAgaGVpZ2h0OiAyNSUgIWltcG9ydGFudDsgfVxcbi5oLTUwIHtcXG4gIGhlaWdodDogNTAlICFpbXBvcnRhbnQ7IH1cXG4uaC03NSB7XFxuICBoZWlnaHQ6IDc1JSAhaW1wb3J0YW50OyB9XFxuLmgtMTAwIHtcXG4gIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyB9XFxuLm13LTEwMCB7XFxuICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxcbi5taC0xMDAge1xcbiAgbWF4LWhlaWdodDogMTAwJSAhaW1wb3J0YW50OyB9XFxuLm0tMCB7XFxuICBtYXJnaW46IDAgIWltcG9ydGFudDsgfVxcbi5tdC0wLCAubXktMCB7XFxuICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7IH1cXG4ubXItMCwgLm14LTAge1xcbiAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cXG4ubWItMCwgLm15LTAge1xcbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XFxuLm1sLTAsIC5teC0wIHtcXG4gIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cXG4ubS0xIHtcXG4gIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuLm10LTEsIC5teS0xIHtcXG4gIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbi5tci0xLCAubXgtMSB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbi5tYi0xLCAubXktMSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4ubWwtMSwgLm14LTEge1xcbiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbi5tLTIge1xcbiAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbi5tdC0yLCAubXktMiB7XFxuICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbi5tci0yLCAubXgtMiB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuLm1iLTIsIC5teS0yIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuLm1sLTIsIC5teC0yIHtcXG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbi5tLTMge1xcbiAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4ubXQtMywgLm15LTMge1xcbiAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XFxuLm1yLTMsIC5teC0zIHtcXG4gIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XFxuLm1iLTMsIC5teS0zIHtcXG4gIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxcbi5tbC0zLCAubXgtMyB7XFxuICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XFxuLm0tNCB7XFxuICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuLm10LTQsIC5teS00IHtcXG4gIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuLm1yLTQsIC5teC00IHtcXG4gIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4ubWItNCwgLm15LTQge1xcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4ubWwtNCwgLm14LTQge1xcbiAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuLm0tNSB7XFxuICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsgfVxcbi5tdC01LCAubXktNSB7XFxuICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4ubXItNSwgLm14LTUge1xcbiAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4ubWItNSwgLm15LTUge1xcbiAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XFxuLm1sLTUsIC5teC01IHtcXG4gIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4ucC0wIHtcXG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxcbi5wdC0wLCAucHktMCB7XFxuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OyB9XFxuLnByLTAsIC5weC0wIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxcbi5wYi0wLCAucHktMCB7XFxuICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XFxuLnBsLTAsIC5weC0wIHtcXG4gIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyB9XFxuLnAtMSB7XFxuICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4ucHQtMSwgLnB5LTEge1xcbiAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbi5wci0xLCAucHgtMSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4ucGItMSwgLnB5LTEge1xcbiAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbi5wbC0xLCAucHgtMSB7XFxuICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbi5wLTIge1xcbiAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4ucHQtMiwgLnB5LTIge1xcbiAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuLnByLTIsIC5weC0yIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuLnBiLTIsIC5weS0yIHtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbi5wbC0yLCAucHgtMiB7XFxuICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuLnAtMyB7XFxuICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4ucHQtMywgLnB5LTMge1xcbiAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsgfVxcbi5wci0zLCAucHgtMyB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4ucGItMywgLnB5LTMge1xcbiAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxcbi5wbC0zLCAucHgtMyB7XFxuICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfVxcbi5wLTQge1xcbiAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4ucHQtNCwgLnB5LTQge1xcbiAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuLnByLTQsIC5weC00IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuLnBiLTQsIC5weS00IHtcXG4gIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbi5wbC00LCAucHgtNCB7XFxuICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuLnAtNSB7XFxuICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4ucHQtNSwgLnB5LTUge1xcbiAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsgfVxcbi5wci01LCAucHgtNSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4ucGItNSwgLnB5LTUge1xcbiAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsgfVxcbi5wbC01LCAucHgtNSB7XFxuICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsgfVxcbi5tLWF1dG8ge1xcbiAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7IH1cXG4ubXQtYXV0bywgLm15LWF1dG8ge1xcbiAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OyB9XFxuLm1yLWF1dG8sIC5teC1hdXRvIHtcXG4gIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OyB9XFxuLm1iLWF1dG8sIC5teS1hdXRvIHtcXG4gIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsgfVxcbi5tbC1hdXRvLCAubXgtYXV0byB7XFxuICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OyB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XFxuICAubS1zbS0wIHtcXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5tdC1zbS0wLCAubXktc20tMCB7XFxuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxcbiAgLm1yLXNtLTAsIC5teC1zbS0wIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5tYi1zbS0wLCAubXktc20tMCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfVxcbiAgLm1sLXNtLTAsIC5teC1zbS0wIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxcbiAgLm0tc20tMSB7XFxuICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubXQtc20tMSwgLm15LXNtLTEge1xcbiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tci1zbS0xLCAubXgtc20tMSB7XFxuICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWItc20tMSwgLm15LXNtLTEge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tbC1zbS0xLCAubXgtc20tMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tLXNtLTIge1xcbiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubXQtc20tMiwgLm15LXNtLTIge1xcbiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1yLXNtLTIsIC5teC1zbS0yIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1iLXNtLTIsIC5teS1zbS0yIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tbC1zbS0yLCAubXgtc20tMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm0tc20tMyB7XFxuICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAubXQtc20tMywgLm15LXNtLTMge1xcbiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tci1zbS0zLCAubXgtc20tMyB7XFxuICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWItc20tMywgLm15LXNtLTMge1xcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tbC1zbS0zLCAubXgtc20tMyB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tLXNtLTQge1xcbiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubXQtc20tNCwgLm15LXNtLTQge1xcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1yLXNtLTQsIC5teC1zbS00IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1iLXNtLTQsIC5teS1zbS00IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tbC1zbS00LCAubXgtc20tNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm0tc20tNSB7XFxuICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAubXQtc20tNSwgLm15LXNtLTUge1xcbiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tci1zbS01LCAubXgtc20tNSB7XFxuICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAubWItc20tNSwgLm15LXNtLTUge1xcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tbC1zbS01LCAubXgtc20tNSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wLXNtLTAge1xcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5wdC1zbS0wLCAucHktc20tMCB7XFxuICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5wci1zbS0wLCAucHgtc20tMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxcbiAgLnBiLXNtLTAsIC5weS1zbS0wIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfVxcbiAgLnBsLXNtLTAsIC5weC1zbS0wIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5wLXNtLTEge1xcbiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wdC1zbS0xLCAucHktc20tMSB7XFxuICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wci1zbS0xLCAucHgtc20tMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBiLXNtLTEsIC5weS1zbS0xIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBsLXNtLTEsIC5weC1zbS0xIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wLXNtLTIge1xcbiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnB0LXNtLTIsIC5weS1zbS0yIHtcXG4gICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucHItc20tMiwgLnB4LXNtLTIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBiLXNtLTIsIC5weS1zbS0yIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucGwtc20tMiwgLnB4LXNtLTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucC1zbS0zIHtcXG4gICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAucHQtc20tMywgLnB5LXNtLTMge1xcbiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAucHItc20tMywgLnB4LXNtLTMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wYi1zbS0zLCAucHktc20tMyB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wbC1zbS0zLCAucHgtc20tMyB7XFxuICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAucC1zbS00IHtcXG4gICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wdC1zbS00LCAucHktc20tNCB7XFxuICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnByLXNtLTQsIC5weC1zbS00IHtcXG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wYi1zbS00LCAucHktc20tNCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBsLXNtLTQsIC5weC1zbS00IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnAtc20tNSB7XFxuICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLnB0LXNtLTUsIC5weS1zbS01IHtcXG4gICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLnByLXNtLTUsIC5weC1zbS01IHtcXG4gICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAucGItc20tNSwgLnB5LXNtLTUge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAucGwtc20tNSwgLnB4LXNtLTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLm0tc20tYXV0byB7XFxuICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OyB9XFxuICAubXQtc20tYXV0bywgLm15LXNtLWF1dG8ge1xcbiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7IH1cXG4gIC5tci1zbS1hdXRvLCAubXgtc20tYXV0byB7XFxuICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OyB9XFxuICAubWItc20tYXV0bywgLm15LXNtLWF1dG8ge1xcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7IH1cXG4gIC5tbC1zbS1hdXRvLCAubXgtc20tYXV0byB7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7IH0gfVxcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xcbiAgLm0tbWQtMCB7XFxuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OyB9XFxuICAubXQtbWQtMCwgLm15LW1kLTAge1xcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5tci1tZC0wLCAubXgtbWQtMCB7XFxuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9XFxuICAubWItbWQtMCwgLm15LW1kLTAge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5tbC1tZC0wLCAubXgtbWQtMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5tLW1kLTEge1xcbiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm10LW1kLTEsIC5teS1tZC0xIHtcXG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubXItbWQtMSwgLm14LW1kLTEge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1iLW1kLTEsIC5teS1tZC0xIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWwtbWQtMSwgLm14LW1kLTEge1xcbiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubS1tZC0yIHtcXG4gICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm10LW1kLTIsIC5teS1tZC0yIHtcXG4gICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tci1tZC0yLCAubXgtbWQtMiB7XFxuICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tYi1tZC0yLCAubXktbWQtMiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWwtbWQtMiwgLm14LW1kLTIge1xcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tLW1kLTMge1xcbiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLm10LW1kLTMsIC5teS1tZC0zIHtcXG4gICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAubXItbWQtMywgLm14LW1kLTMge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1iLW1kLTMsIC5teS1tZC0zIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWwtbWQtMywgLm14LW1kLTMge1xcbiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAubS1tZC00IHtcXG4gICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm10LW1kLTQsIC5teS1tZC00IHtcXG4gICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tci1tZC00LCAubXgtbWQtNCB7XFxuICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tYi1tZC00LCAubXktbWQtNCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWwtbWQtNCwgLm14LW1kLTQge1xcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tLW1kLTUge1xcbiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLm10LW1kLTUsIC5teS1tZC01IHtcXG4gICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAubXItbWQtNSwgLm14LW1kLTUge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1iLW1kLTUsIC5teS1tZC01IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAubWwtbWQtNSwgLm14LW1kLTUge1xcbiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAucC1tZC0wIHtcXG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50OyB9XFxuICAucHQtbWQtMCwgLnB5LW1kLTAge1xcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OyB9XFxuICAucHItbWQtMCwgLnB4LW1kLTAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5wYi1tZC0wLCAucHktbWQtMCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5wbC1tZC0wLCAucHgtbWQtMCB7XFxuICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyB9XFxuICAucC1tZC0xIHtcXG4gICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucHQtbWQtMSwgLnB5LW1kLTEge1xcbiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucHItbWQtMSwgLnB4LW1kLTEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wYi1tZC0xLCAucHktbWQtMSB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wbC1tZC0xLCAucHgtbWQtMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucC1tZC0yIHtcXG4gICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wdC1tZC0yLCAucHktbWQtMiB7XFxuICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnByLW1kLTIsIC5weC1tZC0yIHtcXG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wYi1tZC0yLCAucHktbWQtMiB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBsLW1kLTIsIC5weC1tZC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnAtbWQtMyB7XFxuICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLnB0LW1kLTMsIC5weS1tZC0zIHtcXG4gICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLnByLW1kLTMsIC5weC1tZC0zIHtcXG4gICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAucGItbWQtMywgLnB5LW1kLTMge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAucGwtbWQtMywgLnB4LW1kLTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLnAtbWQtNCB7XFxuICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucHQtbWQtNCwgLnB5LW1kLTQge1xcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wci1tZC00LCAucHgtbWQtNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucGItbWQtNCwgLnB5LW1kLTQge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wbC1tZC00LCAucHgtbWQtNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wLW1kLTUge1xcbiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wdC1tZC01LCAucHktbWQtNSB7XFxuICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wci1tZC01LCAucHgtbWQtNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBiLW1kLTUsIC5weS1tZC01IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBsLW1kLTUsIC5weC1tZC01IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tLW1kLWF1dG8ge1xcbiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsgfVxcbiAgLm10LW1kLWF1dG8sIC5teS1tZC1hdXRvIHtcXG4gICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OyB9XFxuICAubXItbWQtYXV0bywgLm14LW1kLWF1dG8ge1xcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfVxcbiAgLm1iLW1kLWF1dG8sIC5teS1tZC1hdXRvIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OyB9XFxuICAubWwtbWQtYXV0bywgLm14LW1kLWF1dG8ge1xcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcXG4gIC5tLWxnLTAge1xcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsgfVxcbiAgLm10LWxnLTAsIC5teS1sZy0wIHtcXG4gICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OyB9XFxuICAubXItbGctMCwgLm14LWxnLTAge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxcbiAgLm1iLWxnLTAsIC5teS1sZy0wIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XFxuICAubWwtbGctMCwgLm14LWxnLTAge1xcbiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OyB9XFxuICAubS1sZy0xIHtcXG4gICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tdC1sZy0xLCAubXktbGctMSB7XFxuICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1yLWxnLTEsIC5teC1sZy0xIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tYi1sZy0xLCAubXktbGctMSB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1sLWxnLTEsIC5teC1sZy0xIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm0tbGctMiB7XFxuICAgIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tdC1sZy0yLCAubXktbGctMiB7XFxuICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubXItbGctMiwgLm14LWxnLTIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWItbGctMiwgLm15LWxnLTIge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1sLWxnLTIsIC5teC1sZy0yIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubS1sZy0zIHtcXG4gICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tdC1sZy0zLCAubXktbGctMyB7XFxuICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1yLWxnLTMsIC5teC1sZy0zIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tYi1sZy0zLCAubXktbGctMyB7XFxuICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1sLWxnLTMsIC5teC1sZy0zIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLm0tbGctNCB7XFxuICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tdC1sZy00LCAubXktbGctNCB7XFxuICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubXItbGctNCwgLm14LWxnLTQge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWItbGctNCwgLm15LWxnLTQge1xcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1sLWxnLTQsIC5teC1sZy00IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubS1sZy01IHtcXG4gICAgbWFyZ2luOiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tdC1sZy01LCAubXktbGctNSB7XFxuICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1yLWxnLTUsIC5teC1sZy01IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tYi1sZy01LCAubXktbGctNSB7XFxuICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1sLWxnLTUsIC5teC1sZy01IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLnAtbGctMCB7XFxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxcbiAgLnB0LWxnLTAsIC5weS1sZy0wIHtcXG4gICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsgfVxcbiAgLnByLWxnLTAsIC5weC1sZy0wIHtcXG4gICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OyB9XFxuICAucGItbGctMCwgLnB5LWxnLTAge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XFxuICAucGwtbGctMCwgLnB4LWxnLTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxcbiAgLnAtbGctMSB7XFxuICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnB0LWxnLTEsIC5weS1sZy0xIHtcXG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnByLWxnLTEsIC5weC1sZy0xIHtcXG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucGItbGctMSwgLnB5LWxnLTEge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucGwtbGctMSwgLnB4LWxnLTEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnAtbGctMiB7XFxuICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucHQtbGctMiwgLnB5LWxnLTIge1xcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wci1sZy0yLCAucHgtbGctMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucGItbGctMiwgLnB5LWxnLTIge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wbC1sZy0yLCAucHgtbGctMiB7XFxuICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wLWxnLTMge1xcbiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wdC1sZy0zLCAucHktbGctMyB7XFxuICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wci1sZy0zLCAucHgtbGctMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBiLWxnLTMsIC5weS1sZy0zIHtcXG4gICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBsLWxnLTMsIC5weC1sZy0zIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wLWxnLTQge1xcbiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnB0LWxnLTQsIC5weS1sZy00IHtcXG4gICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucHItbGctNCwgLnB4LWxnLTQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBiLWxnLTQsIC5weS1sZy00IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucGwtbGctNCwgLnB4LWxnLTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucC1sZy01IHtcXG4gICAgcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAucHQtbGctNSwgLnB5LWxnLTUge1xcbiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAucHItbGctNSwgLnB4LWxnLTUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wYi1sZy01LCAucHktbGctNSB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wbC1sZy01LCAucHgtbGctNSB7XFxuICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAubS1sZy1hdXRvIHtcXG4gICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7IH1cXG4gIC5tdC1sZy1hdXRvLCAubXktbGctYXV0byB7XFxuICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsgfVxcbiAgLm1yLWxnLWF1dG8sIC5teC1sZy1hdXRvIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IH1cXG4gIC5tYi1sZy1hdXRvLCAubXktbGctYXV0byB7XFxuICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsgfVxcbiAgLm1sLWxnLWF1dG8sIC5teC1sZy1hdXRvIHtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsgfSB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xcbiAgLm0teGwtMCB7XFxuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OyB9XFxuICAubXQteGwtMCwgLm15LXhsLTAge1xcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5tci14bC0wLCAubXgteGwtMCB7XFxuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9XFxuICAubWIteGwtMCwgLm15LXhsLTAge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5tbC14bC0wLCAubXgteGwtMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5tLXhsLTEge1xcbiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm10LXhsLTEsIC5teS14bC0xIHtcXG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubXIteGwtMSwgLm14LXhsLTEge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1iLXhsLTEsIC5teS14bC0xIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWwteGwtMSwgLm14LXhsLTEge1xcbiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubS14bC0yIHtcXG4gICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm10LXhsLTIsIC5teS14bC0yIHtcXG4gICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tci14bC0yLCAubXgteGwtMiB7XFxuICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tYi14bC0yLCAubXkteGwtMiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWwteGwtMiwgLm14LXhsLTIge1xcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tLXhsLTMge1xcbiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLm10LXhsLTMsIC5teS14bC0zIHtcXG4gICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAubXIteGwtMywgLm14LXhsLTMge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1iLXhsLTMsIC5teS14bC0zIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWwteGwtMywgLm14LXhsLTMge1xcbiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAubS14bC00IHtcXG4gICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLm10LXhsLTQsIC5teS14bC00IHtcXG4gICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tci14bC00LCAubXgteGwtNCB7XFxuICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tYi14bC00LCAubXkteGwtNCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAubWwteGwtNCwgLm14LXhsLTQge1xcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tLXhsLTUge1xcbiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLm10LXhsLTUsIC5teS14bC01IHtcXG4gICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAubXIteGwtNSwgLm14LXhsLTUge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLm1iLXhsLTUsIC5teS14bC01IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAubWwteGwtNSwgLm14LXhsLTUge1xcbiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OyB9XFxuICAucC14bC0wIHtcXG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50OyB9XFxuICAucHQteGwtMCwgLnB5LXhsLTAge1xcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OyB9XFxuICAucHIteGwtMCwgLnB4LXhsLTAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5wYi14bC0wLCAucHkteGwtMCB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cXG4gIC5wbC14bC0wLCAucHgteGwtMCB7XFxuICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyB9XFxuICAucC14bC0xIHtcXG4gICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucHQteGwtMSwgLnB5LXhsLTEge1xcbiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucHIteGwtMSwgLnB4LXhsLTEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wYi14bC0xLCAucHkteGwtMSB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wbC14bC0xLCAucHgteGwtMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucC14bC0yIHtcXG4gICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wdC14bC0yLCAucHkteGwtMiB7XFxuICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnByLXhsLTIsIC5weC14bC0yIHtcXG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wYi14bC0yLCAucHkteGwtMiB7XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBsLXhsLTIsIC5weC14bC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxcbiAgLnAteGwtMyB7XFxuICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLnB0LXhsLTMsIC5weS14bC0zIHtcXG4gICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLnByLXhsLTMsIC5weC14bC0zIHtcXG4gICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAucGIteGwtMywgLnB5LXhsLTMge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9XFxuICAucGwteGwtMywgLnB4LXhsLTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfVxcbiAgLnAteGwtNCB7XFxuICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucHQteGwtNCwgLnB5LXhsLTQge1xcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wci14bC00LCAucHgteGwtNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XFxuICAucGIteGwtNCwgLnB5LXhsLTQge1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wbC14bC00LCAucHgteGwtNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wLXhsLTUge1xcbiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wdC14bC01LCAucHkteGwtNSB7XFxuICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5wci14bC01LCAucHgteGwtNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBiLXhsLTUsIC5weS14bC01IHtcXG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsgfVxcbiAgLnBsLXhsLTUsIC5weC14bC01IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cXG4gIC5tLXhsLWF1dG8ge1xcbiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsgfVxcbiAgLm10LXhsLWF1dG8sIC5teS14bC1hdXRvIHtcXG4gICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OyB9XFxuICAubXIteGwtYXV0bywgLm14LXhsLWF1dG8ge1xcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfVxcbiAgLm1iLXhsLWF1dG8sIC5teS14bC1hdXRvIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OyB9XFxuICAubWwteGwtYXV0bywgLm14LXhsLWF1dG8ge1xcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OyB9IH1cXG4udGV4dC1qdXN0aWZ5IHtcXG4gIHRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudDsgfVxcbi50ZXh0LW5vd3JhcCB7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7IH1cXG4udGV4dC10cnVuY2F0ZSB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XFxuLnRleHQtbGVmdCB7XFxuICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH1cXG4udGV4dC1yaWdodCB7XFxuICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9XFxuLnRleHQtY2VudGVyIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OyB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XFxuICAudGV4dC1zbS1sZWZ0IHtcXG4gICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyB9XFxuICAudGV4dC1zbS1yaWdodCB7XFxuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cXG4gIC50ZXh0LXNtLWNlbnRlciB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OyB9IH1cXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcXG4gIC50ZXh0LW1kLWxlZnQge1xcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH1cXG4gIC50ZXh0LW1kLXJpZ2h0IHtcXG4gICAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsgfVxcbiAgLnRleHQtbWQtY2VudGVyIHtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7IH0gfVxcbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xcbiAgLnRleHQtbGctbGVmdCB7XFxuICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsgfVxcbiAgLnRleHQtbGctcmlnaHQge1xcbiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9XFxuICAudGV4dC1sZy1jZW50ZXIge1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfSB9XFxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xcbiAgLnRleHQteGwtbGVmdCB7XFxuICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsgfVxcbiAgLnRleHQteGwtcmlnaHQge1xcbiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9XFxuICAudGV4dC14bC1jZW50ZXIge1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfSB9XFxuLnRleHQtbG93ZXJjYXNlIHtcXG4gIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudDsgfVxcbi50ZXh0LXVwcGVyY2FzZSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7IH1cXG4udGV4dC1jYXBpdGFsaXplIHtcXG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnQ7IH1cXG4uZm9udC13ZWlnaHQtbGlnaHQge1xcbiAgZm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50OyB9XFxuLmZvbnQtd2VpZ2h0LW5vcm1hbCB7XFxuICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7IH1cXG4uZm9udC13ZWlnaHQtYm9sZCB7XFxuICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IH1cXG4uZm9udC1pdGFsaWMge1xcbiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7IH1cXG4udGV4dC13aGl0ZSB7XFxuICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9XFxuLnRleHQtcHJpbWFyeSB7XFxuICBjb2xvcjogIzAwN2JmZiAhaW1wb3J0YW50OyB9XFxuYS50ZXh0LXByaW1hcnk6Zm9jdXMsIGEudGV4dC1wcmltYXJ5OmhvdmVyIHtcXG4gIGNvbG9yOiAjMDA2MmNjICFpbXBvcnRhbnQ7IH1cXG4udGV4dC1zZWNvbmRhcnkge1xcbiAgY29sb3I6ICM4NjhlOTYgIWltcG9ydGFudDsgfVxcbmEudGV4dC1zZWNvbmRhcnk6Zm9jdXMsIGEudGV4dC1zZWNvbmRhcnk6aG92ZXIge1xcbiAgY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsgfVxcbi50ZXh0LXN1Y2Nlc3Mge1xcbiAgY29sb3I6ICMyOGE3NDUgIWltcG9ydGFudDsgfVxcbmEudGV4dC1zdWNjZXNzOmZvY3VzLCBhLnRleHQtc3VjY2Vzczpob3ZlciB7XFxuICBjb2xvcjogIzFlN2UzNCAhaW1wb3J0YW50OyB9XFxuLnRleHQtaW5mbyB7XFxuICBjb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50OyB9XFxuYS50ZXh0LWluZm86Zm9jdXMsIGEudGV4dC1pbmZvOmhvdmVyIHtcXG4gIGNvbG9yOiAjMTE3YThiICFpbXBvcnRhbnQ7IH1cXG4udGV4dC13YXJuaW5nIHtcXG4gIGNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7IH1cXG5hLnRleHQtd2FybmluZzpmb2N1cywgYS50ZXh0LXdhcm5pbmc6aG92ZXIge1xcbiAgY29sb3I6ICNkMzllMDAgIWltcG9ydGFudDsgfVxcbi50ZXh0LWRhbmdlciB7XFxuICBjb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50OyB9XFxuYS50ZXh0LWRhbmdlcjpmb2N1cywgYS50ZXh0LWRhbmdlcjpob3ZlciB7XFxuICBjb2xvcjogI2JkMjEzMCAhaW1wb3J0YW50OyB9XFxuLnRleHQtbGlnaHQge1xcbiAgY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsgfVxcbmEudGV4dC1saWdodDpmb2N1cywgYS50ZXh0LWxpZ2h0OmhvdmVyIHtcXG4gIGNvbG9yOiAjZGFlMGU1ICFpbXBvcnRhbnQ7IH1cXG4udGV4dC1kYXJrIHtcXG4gIGNvbG9yOiAjMzQzYTQwICFpbXBvcnRhbnQ7IH1cXG5hLnRleHQtZGFyazpmb2N1cywgYS50ZXh0LWRhcms6aG92ZXIge1xcbiAgY29sb3I6ICMxZDIxMjQgIWltcG9ydGFudDsgfVxcbi50ZXh0LW11dGVkIHtcXG4gIGNvbG9yOiAjODY4ZTk2ICFpbXBvcnRhbnQ7IH1cXG4udGV4dC1oaWRlIHtcXG4gIGZvbnQ6IDAvMCBhO1xcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlcjogMDsgfVxcbi52aXNpYmxlIHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsgfVxcbi5pbnZpc2libGUge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7IH1cXG5AbWVkaWEgcHJpbnQge1xcbiAgKiwgKjo6YmVmb3JlLCAqOjphZnRlciB7XFxuICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgfVxcbiAgYSwgYTp2aXNpdGVkIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cXG4gIGFiYnJbdGl0bGVdOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6IFxcXCIgKFxcXCIgYXR0cih0aXRsZSkgXFxcIilcXFwiOyB9XFxuICBwcmUge1xcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDsgfVxcbiAgcHJlLCBibG9ja3F1b3RlIHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTtcXG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XFxuICB0aGVhZCB7XFxuICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgfVxcbiAgdHIsIGltZyB7XFxuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxcbiAgcCwgaDIsIGgzIHtcXG4gICAgb3JwaGFuczogMztcXG4gICAgd2lkb3dzOiAzOyB9XFxuICBoMiwgaDMge1xcbiAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsgfVxcbiAgLm5hdmJhciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7IH1cXG4gIC5iYWRnZSB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7IH1cXG4gIC50YWJsZSB7XFxuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDsgfVxcbiAgICAudGFibGUgdGQsIC50YWJsZSB0aCB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9XFxuICAudGFibGUtYm9yZGVyZWQgdGgsIC50YWJsZS1ib3JkZXJlZCB0ZCB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDsgfSB9XFxuLmRlc2sge1xcbiAgcGFkZGluZzogMHB4OyB9XFxuLm5hdiB7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOWVjZWY7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxcbi50d28tY29sdW1uIHtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciA0ZnI7XFxuICBncmlkLWF1dG8tcm93czogbWlubWF4KDEwMCUsIGF1dG8pOyB9XFxuLm1haW4sIC5zaWRlYmFyIHtcXG4gIHBhZGRpbmc6IDJyZW07XFxuICBtaW4taGVpZ2h0OiAxMDB2aDsgfVxcbi5zaWRlYmFyIHtcXG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlOWVjZWY7IH1cXG4uaGlkZSB7XFxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cXG4ucGFnZS1lcnJvciB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBwYWRkaW5nOiAyMDBweCAwcHg7IH1cXG4uZm9ybS1ib2R5IC5mb3JtLXRvb2xiYXIge1xcbiAgaGVpZ2h0OiAycmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTsgfVxcbi5mb3JtLWJvZHkgLmFsZXJ0IHtcXG4gIG1hcmdpbi10b3A6IDFyZW07IH1cXG4uZHJvcGRvd24tbWVudS1yaWdodCB7XFxuICByaWdodDogMDtcXG4gIGxlZnQ6IGF1dG87IH1cXG4ubGlzdC1zZWFyY2gge1xcbiAgbWF4LXdpZHRoOiA0MDBweDtcXG4gIG1hcmdpbi1ib3R0b206IDFyZW07IH1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2xpYj97fSEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9saWIvbG9hZGVyLmpzP3tcImluY2x1ZGVQYXRoc1wiOltcIm5vZGVfbW9kdWxlc1wiLFwiLi9jbGllbnQvc2Nzc1wiXX0hLi9zY3NzL21haW4uc2Nzc1xuLy8gbW9kdWxlIGlkID0gNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKlxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xuXG52YXIgc3R5bGVzSW5Eb20gPSB7fTtcblxudmFyXHRtZW1vaXplID0gZnVuY3Rpb24gKGZuKSB7XG5cdHZhciBtZW1vO1xuXG5cdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0aWYgKHR5cGVvZiBtZW1vID09PSBcInVuZGVmaW5lZFwiKSBtZW1vID0gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRyZXR1cm4gbWVtbztcblx0fTtcbn07XG5cbnZhciBpc09sZElFID0gbWVtb2l6ZShmdW5jdGlvbiAoKSB7XG5cdC8vIFRlc3QgZm9yIElFIDw9IDkgYXMgcHJvcG9zZWQgYnkgQnJvd3NlcmhhY2tzXG5cdC8vIEBzZWUgaHR0cDovL2Jyb3dzZXJoYWNrcy5jb20vI2hhY2stZTcxZDg2OTJmNjUzMzQxNzNmZWU3MTVjMjIyY2I4MDVcblx0Ly8gVGVzdHMgZm9yIGV4aXN0ZW5jZSBvZiBzdGFuZGFyZCBnbG9iYWxzIGlzIHRvIGFsbG93IHN0eWxlLWxvYWRlclxuXHQvLyB0byBvcGVyYXRlIGNvcnJlY3RseSBpbnRvIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudHNcblx0Ly8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlci9pc3N1ZXMvMTc3XG5cdHJldHVybiB3aW5kb3cgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsICYmICF3aW5kb3cuYXRvYjtcbn0pO1xuXG52YXIgZ2V0RWxlbWVudCA9IChmdW5jdGlvbiAoZm4pIHtcblx0dmFyIG1lbW8gPSB7fTtcblxuXHRyZXR1cm4gZnVuY3Rpb24oc2VsZWN0b3IpIHtcblx0XHRpZiAodHlwZW9mIG1lbW9bc2VsZWN0b3JdID09PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0XHR2YXIgc3R5bGVUYXJnZXQgPSBmbi5jYWxsKHRoaXMsIHNlbGVjdG9yKTtcblx0XHRcdC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cdFx0XHRpZiAoc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHQvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuXHRcdFx0XHRcdC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG5cdFx0XHRcdFx0c3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcblx0XHRcdFx0fSBjYXRjaChlKSB7XG5cdFx0XHRcdFx0c3R5bGVUYXJnZXQgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRtZW1vW3NlbGVjdG9yXSA9IHN0eWxlVGFyZ2V0O1xuXHRcdH1cblx0XHRyZXR1cm4gbWVtb1tzZWxlY3Rvcl1cblx0fTtcbn0pKGZ1bmN0aW9uICh0YXJnZXQpIHtcblx0cmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KVxufSk7XG5cbnZhciBzaW5nbGV0b24gPSBudWxsO1xudmFyXHRzaW5nbGV0b25Db3VudGVyID0gMDtcbnZhclx0c3R5bGVzSW5zZXJ0ZWRBdFRvcCA9IFtdO1xuXG52YXJcdGZpeFVybHMgPSByZXF1aXJlKFwiLi91cmxzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGxpc3QsIG9wdGlvbnMpIHtcblx0aWYgKHR5cGVvZiBERUJVRyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBERUJVRykge1xuXHRcdGlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBFcnJvcihcIlRoZSBzdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudFwiKTtcblx0fVxuXG5cdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG5cdG9wdGlvbnMuYXR0cnMgPSB0eXBlb2Ygb3B0aW9ucy5hdHRycyA9PT0gXCJvYmplY3RcIiA/IG9wdGlvbnMuYXR0cnMgOiB7fTtcblxuXHQvLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cblx0Ly8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxuXHRpZiAoIW9wdGlvbnMuc2luZ2xldG9uICYmIHR5cGVvZiBvcHRpb25zLnNpbmdsZXRvbiAhPT0gXCJib29sZWFuXCIpIG9wdGlvbnMuc2luZ2xldG9uID0gaXNPbGRJRSgpO1xuXG5cdC8vIEJ5IGRlZmF1bHQsIGFkZCA8c3R5bGU+IHRhZ3MgdG8gdGhlIDxoZWFkPiBlbGVtZW50XG5cdGlmICghb3B0aW9ucy5pbnNlcnRJbnRvKSBvcHRpb25zLmluc2VydEludG8gPSBcImhlYWRcIjtcblxuXHQvLyBCeSBkZWZhdWx0LCBhZGQgPHN0eWxlPiB0YWdzIHRvIHRoZSBib3R0b20gb2YgdGhlIHRhcmdldFxuXHRpZiAoIW9wdGlvbnMuaW5zZXJ0QXQpIG9wdGlvbnMuaW5zZXJ0QXQgPSBcImJvdHRvbVwiO1xuXG5cdHZhciBzdHlsZXMgPSBsaXN0VG9TdHlsZXMobGlzdCwgb3B0aW9ucyk7XG5cblx0YWRkU3R5bGVzVG9Eb20oc3R5bGVzLCBvcHRpb25zKTtcblxuXHRyZXR1cm4gZnVuY3Rpb24gdXBkYXRlIChuZXdMaXN0KSB7XG5cdFx0dmFyIG1heVJlbW92ZSA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpdGVtID0gc3R5bGVzW2ldO1xuXHRcdFx0dmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF07XG5cblx0XHRcdGRvbVN0eWxlLnJlZnMtLTtcblx0XHRcdG1heVJlbW92ZS5wdXNoKGRvbVN0eWxlKTtcblx0XHR9XG5cblx0XHRpZihuZXdMaXN0KSB7XG5cdFx0XHR2YXIgbmV3U3R5bGVzID0gbGlzdFRvU3R5bGVzKG5ld0xpc3QsIG9wdGlvbnMpO1xuXHRcdFx0YWRkU3R5bGVzVG9Eb20obmV3U3R5bGVzLCBvcHRpb25zKTtcblx0XHR9XG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IG1heVJlbW92ZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGRvbVN0eWxlID0gbWF5UmVtb3ZlW2ldO1xuXG5cdFx0XHRpZihkb21TdHlsZS5yZWZzID09PSAwKSB7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIGRvbVN0eWxlLnBhcnRzW2pdKCk7XG5cblx0XHRcdFx0ZGVsZXRlIHN0eWxlc0luRG9tW2RvbVN0eWxlLmlkXTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG59O1xuXG5mdW5jdGlvbiBhZGRTdHlsZXNUb0RvbSAoc3R5bGVzLCBvcHRpb25zKSB7XG5cdGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIGl0ZW0gPSBzdHlsZXNbaV07XG5cdFx0dmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF07XG5cblx0XHRpZihkb21TdHlsZSkge1xuXHRcdFx0ZG9tU3R5bGUucmVmcysrO1xuXG5cdFx0XHRmb3IodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ZG9tU3R5bGUucGFydHNbal0oaXRlbS5wYXJ0c1tqXSk7XG5cdFx0XHR9XG5cblx0XHRcdGZvcig7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YXIgcGFydHMgPSBbXTtcblxuXHRcdFx0Zm9yKHZhciBqID0gMDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0cGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdLCBvcHRpb25zKSk7XG5cdFx0XHR9XG5cblx0XHRcdHN0eWxlc0luRG9tW2l0ZW0uaWRdID0ge2lkOiBpdGVtLmlkLCByZWZzOiAxLCBwYXJ0czogcGFydHN9O1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBsaXN0VG9TdHlsZXMgKGxpc3QsIG9wdGlvbnMpIHtcblx0dmFyIHN0eWxlcyA9IFtdO1xuXHR2YXIgbmV3U3R5bGVzID0ge307XG5cblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIGl0ZW0gPSBsaXN0W2ldO1xuXHRcdHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuXHRcdHZhciBjc3MgPSBpdGVtWzFdO1xuXHRcdHZhciBtZWRpYSA9IGl0ZW1bMl07XG5cdFx0dmFyIHNvdXJjZU1hcCA9IGl0ZW1bM107XG5cdFx0dmFyIHBhcnQgPSB7Y3NzOiBjc3MsIG1lZGlhOiBtZWRpYSwgc291cmNlTWFwOiBzb3VyY2VNYXB9O1xuXG5cdFx0aWYoIW5ld1N0eWxlc1tpZF0pIHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0gPSB7aWQ6IGlkLCBwYXJ0czogW3BhcnRdfSk7XG5cdFx0ZWxzZSBuZXdTdHlsZXNbaWRdLnBhcnRzLnB1c2gocGFydCk7XG5cdH1cblxuXHRyZXR1cm4gc3R5bGVzO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQgKG9wdGlvbnMsIHN0eWxlKSB7XG5cdHZhciB0YXJnZXQgPSBnZXRFbGVtZW50KG9wdGlvbnMuaW5zZXJ0SW50bylcblxuXHRpZiAoIXRhcmdldCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0SW50bycgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuXHR9XG5cblx0dmFyIGxhc3RTdHlsZUVsZW1lbnRJbnNlcnRlZEF0VG9wID0gc3R5bGVzSW5zZXJ0ZWRBdFRvcFtzdHlsZXNJbnNlcnRlZEF0VG9wLmxlbmd0aCAtIDFdO1xuXG5cdGlmIChvcHRpb25zLmluc2VydEF0ID09PSBcInRvcFwiKSB7XG5cdFx0aWYgKCFsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcCkge1xuXHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZShzdHlsZSwgdGFyZ2V0LmZpcnN0Q2hpbGQpO1xuXHRcdH0gZWxzZSBpZiAobGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3AubmV4dFNpYmxpbmcpIHtcblx0XHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoc3R5bGUsIGxhc3RTdHlsZUVsZW1lbnRJbnNlcnRlZEF0VG9wLm5leHRTaWJsaW5nKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcblx0XHR9XG5cdFx0c3R5bGVzSW5zZXJ0ZWRBdFRvcC5wdXNoKHN0eWxlKTtcblx0fSBlbHNlIGlmIChvcHRpb25zLmluc2VydEF0ID09PSBcImJvdHRvbVwiKSB7XG5cdFx0dGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcblx0fSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy5pbnNlcnRBdCA9PT0gXCJvYmplY3RcIiAmJiBvcHRpb25zLmluc2VydEF0LmJlZm9yZSkge1xuXHRcdHZhciBuZXh0U2libGluZyA9IGdldEVsZW1lbnQob3B0aW9ucy5pbnNlcnRJbnRvICsgXCIgXCIgKyBvcHRpb25zLmluc2VydEF0LmJlZm9yZSk7XG5cdFx0dGFyZ2V0Lmluc2VydEJlZm9yZShzdHlsZSwgbmV4dFNpYmxpbmcpO1xuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIltTdHlsZSBMb2FkZXJdXFxuXFxuIEludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciAnaW5zZXJ0QXQnICgnb3B0aW9ucy5pbnNlcnRBdCcpIGZvdW5kLlxcbiBNdXN0IGJlICd0b3AnLCAnYm90dG9tJywgb3IgT2JqZWN0LlxcbiAoaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9zdHlsZS1sb2FkZXIjaW5zZXJ0YXQpXFxuXCIpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudCAoc3R5bGUpIHtcblx0aWYgKHN0eWxlLnBhcmVudE5vZGUgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblx0c3R5bGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZSk7XG5cblx0dmFyIGlkeCA9IHN0eWxlc0luc2VydGVkQXRUb3AuaW5kZXhPZihzdHlsZSk7XG5cdGlmKGlkeCA+PSAwKSB7XG5cdFx0c3R5bGVzSW5zZXJ0ZWRBdFRvcC5zcGxpY2UoaWR4LCAxKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQgKG9wdGlvbnMpIHtcblx0dmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuXG5cdG9wdGlvbnMuYXR0cnMudHlwZSA9IFwidGV4dC9jc3NcIjtcblxuXHRhZGRBdHRycyhzdHlsZSwgb3B0aW9ucy5hdHRycyk7XG5cdGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zLCBzdHlsZSk7XG5cblx0cmV0dXJuIHN0eWxlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMaW5rRWxlbWVudCAob3B0aW9ucykge1xuXHR2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuXG5cdG9wdGlvbnMuYXR0cnMudHlwZSA9IFwidGV4dC9jc3NcIjtcblx0b3B0aW9ucy5hdHRycy5yZWwgPSBcInN0eWxlc2hlZXRcIjtcblxuXHRhZGRBdHRycyhsaW5rLCBvcHRpb25zLmF0dHJzKTtcblx0aW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMsIGxpbmspO1xuXG5cdHJldHVybiBsaW5rO1xufVxuXG5mdW5jdGlvbiBhZGRBdHRycyAoZWwsIGF0dHJzKSB7XG5cdE9iamVjdC5rZXlzKGF0dHJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRlbC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyc1trZXldKTtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlIChvYmosIG9wdGlvbnMpIHtcblx0dmFyIHN0eWxlLCB1cGRhdGUsIHJlbW92ZSwgcmVzdWx0O1xuXG5cdC8vIElmIGEgdHJhbnNmb3JtIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLCBydW4gaXQgb24gdGhlIGNzc1xuXHRpZiAob3B0aW9ucy50cmFuc2Zvcm0gJiYgb2JqLmNzcykge1xuXHQgICAgcmVzdWx0ID0gb3B0aW9ucy50cmFuc2Zvcm0ob2JqLmNzcyk7XG5cblx0ICAgIGlmIChyZXN1bHQpIHtcblx0ICAgIFx0Ly8gSWYgdHJhbnNmb3JtIHJldHVybnMgYSB2YWx1ZSwgdXNlIHRoYXQgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgY3NzLlxuXHQgICAgXHQvLyBUaGlzIGFsbG93cyBydW5uaW5nIHJ1bnRpbWUgdHJhbnNmb3JtYXRpb25zIG9uIHRoZSBjc3MuXG5cdCAgICBcdG9iai5jc3MgPSByZXN1bHQ7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgXHQvLyBJZiB0aGUgdHJhbnNmb3JtIGZ1bmN0aW9uIHJldHVybnMgYSBmYWxzeSB2YWx1ZSwgZG9uJ3QgYWRkIHRoaXMgY3NzLlxuXHQgICAgXHQvLyBUaGlzIGFsbG93cyBjb25kaXRpb25hbCBsb2FkaW5nIG9mIGNzc1xuXHQgICAgXHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdCAgICBcdFx0Ly8gbm9vcFxuXHQgICAgXHR9O1xuXHQgICAgfVxuXHR9XG5cblx0aWYgKG9wdGlvbnMuc2luZ2xldG9uKSB7XG5cdFx0dmFyIHN0eWxlSW5kZXggPSBzaW5nbGV0b25Db3VudGVyKys7XG5cblx0XHRzdHlsZSA9IHNpbmdsZXRvbiB8fCAoc2luZ2xldG9uID0gY3JlYXRlU3R5bGVFbGVtZW50KG9wdGlvbnMpKTtcblxuXHRcdHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgZmFsc2UpO1xuXHRcdHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgdHJ1ZSk7XG5cblx0fSBlbHNlIGlmIChcblx0XHRvYmouc291cmNlTWFwICYmXG5cdFx0dHlwZW9mIFVSTCA9PT0gXCJmdW5jdGlvblwiICYmXG5cdFx0dHlwZW9mIFVSTC5jcmVhdGVPYmplY3RVUkwgPT09IFwiZnVuY3Rpb25cIiAmJlxuXHRcdHR5cGVvZiBVUkwucmV2b2tlT2JqZWN0VVJMID09PSBcImZ1bmN0aW9uXCIgJiZcblx0XHR0eXBlb2YgQmxvYiA9PT0gXCJmdW5jdGlvblwiICYmXG5cdFx0dHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIlxuXHQpIHtcblx0XHRzdHlsZSA9IGNyZWF0ZUxpbmtFbGVtZW50KG9wdGlvbnMpO1xuXHRcdHVwZGF0ZSA9IHVwZGF0ZUxpbmsuYmluZChudWxsLCBzdHlsZSwgb3B0aW9ucyk7XG5cdFx0cmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0cmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKTtcblxuXHRcdFx0aWYoc3R5bGUuaHJlZikgVVJMLnJldm9rZU9iamVjdFVSTChzdHlsZS5ocmVmKTtcblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdHN0eWxlID0gY3JlYXRlU3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuXHRcdHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZSk7XG5cdFx0cmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0cmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKTtcblx0XHR9O1xuXHR9XG5cblx0dXBkYXRlKG9iaik7XG5cblx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChuZXdPYmopIHtcblx0XHRpZiAobmV3T2JqKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG5ld09iai5jc3MgPT09IG9iai5jc3MgJiZcblx0XHRcdFx0bmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiZcblx0XHRcdFx0bmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcFxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dXBkYXRlKG9iaiA9IG5ld09iaik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlbW92ZSgpO1xuXHRcdH1cblx0fTtcbn1cblxudmFyIHJlcGxhY2VUZXh0ID0gKGZ1bmN0aW9uICgpIHtcblx0dmFyIHRleHRTdG9yZSA9IFtdO1xuXG5cdHJldHVybiBmdW5jdGlvbiAoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG5cdFx0dGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50O1xuXG5cdFx0cmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJyk7XG5cdH07XG59KSgpO1xuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnIChzdHlsZSwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG5cdHZhciBjc3MgPSByZW1vdmUgPyBcIlwiIDogb2JqLmNzcztcblxuXHRpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuXHRcdHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpO1xuXHR9IGVsc2Uge1xuXHRcdHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKTtcblx0XHR2YXIgY2hpbGROb2RlcyA9IHN0eWxlLmNoaWxkTm9kZXM7XG5cblx0XHRpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHN0eWxlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKTtcblxuXHRcdGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuXHRcdFx0c3R5bGUuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3R5bGUuYXBwZW5kQ2hpbGQoY3NzTm9kZSk7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcgKHN0eWxlLCBvYmopIHtcblx0dmFyIGNzcyA9IG9iai5jc3M7XG5cdHZhciBtZWRpYSA9IG9iai5tZWRpYTtcblxuXHRpZihtZWRpYSkge1xuXHRcdHN0eWxlLnNldEF0dHJpYnV0ZShcIm1lZGlhXCIsIG1lZGlhKVxuXHR9XG5cblx0aWYoc3R5bGUuc3R5bGVTaGVldCkge1xuXHRcdHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcblx0fSBlbHNlIHtcblx0XHR3aGlsZShzdHlsZS5maXJzdENoaWxkKSB7XG5cdFx0XHRzdHlsZS5yZW1vdmVDaGlsZChzdHlsZS5maXJzdENoaWxkKTtcblx0XHR9XG5cblx0XHRzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcblx0fVxufVxuXG5mdW5jdGlvbiB1cGRhdGVMaW5rIChsaW5rLCBvcHRpb25zLCBvYmopIHtcblx0dmFyIGNzcyA9IG9iai5jc3M7XG5cdHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG5cdC8qXG5cdFx0SWYgY29udmVydFRvQWJzb2x1dGVVcmxzIGlzbid0IGRlZmluZWQsIGJ1dCBzb3VyY2VtYXBzIGFyZSBlbmFibGVkXG5cdFx0YW5kIHRoZXJlIGlzIG5vIHB1YmxpY1BhdGggZGVmaW5lZCB0aGVuIGxldHMgdHVybiBjb252ZXJ0VG9BYnNvbHV0ZVVybHNcblx0XHRvbiBieSBkZWZhdWx0LiAgT3RoZXJ3aXNlIGRlZmF1bHQgdG8gdGhlIGNvbnZlcnRUb0Fic29sdXRlVXJscyBvcHRpb25cblx0XHRkaXJlY3RseVxuXHQqL1xuXHR2YXIgYXV0b0ZpeFVybHMgPSBvcHRpb25zLmNvbnZlcnRUb0Fic29sdXRlVXJscyA9PT0gdW5kZWZpbmVkICYmIHNvdXJjZU1hcDtcblxuXHRpZiAob3B0aW9ucy5jb252ZXJ0VG9BYnNvbHV0ZVVybHMgfHwgYXV0b0ZpeFVybHMpIHtcblx0XHRjc3MgPSBmaXhVcmxzKGNzcyk7XG5cdH1cblxuXHRpZiAoc291cmNlTWFwKSB7XG5cdFx0Ly8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjY2MDM4NzVcblx0XHRjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiICsgYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSArIFwiICovXCI7XG5cdH1cblxuXHR2YXIgYmxvYiA9IG5ldyBCbG9iKFtjc3NdLCB7IHR5cGU6IFwidGV4dC9jc3NcIiB9KTtcblxuXHR2YXIgb2xkU3JjID0gbGluay5ocmVmO1xuXG5cdGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cblx0aWYob2xkU3JjKSBVUkwucmV2b2tlT2JqZWN0VVJMKG9sZFNyYyk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcbi8qKlxuICogV2hlbiBzb3VyY2UgbWFwcyBhcmUgZW5hYmxlZCwgYHN0eWxlLWxvYWRlcmAgdXNlcyBhIGxpbmsgZWxlbWVudCB3aXRoIGEgZGF0YS11cmkgdG9cbiAqIGVtYmVkIHRoZSBjc3Mgb24gdGhlIHBhZ2UuIFRoaXMgYnJlYWtzIGFsbCByZWxhdGl2ZSB1cmxzIGJlY2F1c2Ugbm93IHRoZXkgYXJlIHJlbGF0aXZlIHRvIGFcbiAqIGJ1bmRsZSBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IHBhZ2UuXG4gKlxuICogT25lIHNvbHV0aW9uIGlzIHRvIG9ubHkgdXNlIGZ1bGwgdXJscywgYnV0IHRoYXQgbWF5IGJlIGltcG9zc2libGUuXG4gKlxuICogSW5zdGVhZCwgdGhpcyBmdW5jdGlvbiBcImZpeGVzXCIgdGhlIHJlbGF0aXZlIHVybHMgdG8gYmUgYWJzb2x1dGUgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IHBhZ2UgbG9jYXRpb24uXG4gKlxuICogQSBydWRpbWVudGFyeSB0ZXN0IHN1aXRlIGlzIGxvY2F0ZWQgYXQgYHRlc3QvZml4VXJscy5qc2AgYW5kIGNhbiBiZSBydW4gdmlhIHRoZSBgbnBtIHRlc3RgIGNvbW1hbmQuXG4gKlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzcykge1xuICAvLyBnZXQgY3VycmVudCBsb2NhdGlvblxuICB2YXIgbG9jYXRpb24gPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5sb2NhdGlvbjtcblxuICBpZiAoIWxvY2F0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiZml4VXJscyByZXF1aXJlcyB3aW5kb3cubG9jYXRpb25cIik7XG4gIH1cblxuXHQvLyBibGFuayBvciBudWxsP1xuXHRpZiAoIWNzcyB8fCB0eXBlb2YgY3NzICE9PSBcInN0cmluZ1wiKSB7XG5cdCAgcmV0dXJuIGNzcztcbiAgfVxuXG4gIHZhciBiYXNlVXJsID0gbG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyBsb2NhdGlvbi5ob3N0O1xuICB2YXIgY3VycmVudERpciA9IGJhc2VVcmwgKyBsb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC9bXlxcL10qJC8sIFwiL1wiKTtcblxuXHQvLyBjb252ZXJ0IGVhY2ggdXJsKC4uLilcblx0Lypcblx0VGhpcyByZWd1bGFyIGV4cHJlc3Npb24gaXMganVzdCBhIHdheSB0byByZWN1cnNpdmVseSBtYXRjaCBicmFja2V0cyB3aXRoaW5cblx0YSBzdHJpbmcuXG5cblx0IC91cmxcXHMqXFwoICA9IE1hdGNoIG9uIHRoZSB3b3JkIFwidXJsXCIgd2l0aCBhbnkgd2hpdGVzcGFjZSBhZnRlciBpdCBhbmQgdGhlbiBhIHBhcmVuc1xuXHQgICAoICA9IFN0YXJ0IGEgY2FwdHVyaW5nIGdyb3VwXG5cdCAgICAgKD86ICA9IFN0YXJ0IGEgbm9uLWNhcHR1cmluZyBncm91cFxuXHQgICAgICAgICBbXikoXSAgPSBNYXRjaCBhbnl0aGluZyB0aGF0IGlzbid0IGEgcGFyZW50aGVzZXNcblx0ICAgICAgICAgfCAgPSBPUlxuXHQgICAgICAgICBcXCggID0gTWF0Y2ggYSBzdGFydCBwYXJlbnRoZXNlc1xuXHQgICAgICAgICAgICAgKD86ICA9IFN0YXJ0IGFub3RoZXIgbm9uLWNhcHR1cmluZyBncm91cHNcblx0ICAgICAgICAgICAgICAgICBbXikoXSsgID0gTWF0Y2ggYW55dGhpbmcgdGhhdCBpc24ndCBhIHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICAgICAgfCAgPSBPUlxuXHQgICAgICAgICAgICAgICAgIFxcKCAgPSBNYXRjaCBhIHN0YXJ0IHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICAgICAgICAgIFteKShdKiAgPSBNYXRjaCBhbnl0aGluZyB0aGF0IGlzbid0IGEgcGFyZW50aGVzZXNcblx0ICAgICAgICAgICAgICAgICBcXCkgID0gTWF0Y2ggYSBlbmQgcGFyZW50aGVzZXNcblx0ICAgICAgICAgICAgICkgID0gRW5kIEdyb3VwXG4gICAgICAgICAgICAgICpcXCkgPSBNYXRjaCBhbnl0aGluZyBhbmQgdGhlbiBhIGNsb3NlIHBhcmVuc1xuICAgICAgICAgICkgID0gQ2xvc2Ugbm9uLWNhcHR1cmluZyBncm91cFxuICAgICAgICAgICogID0gTWF0Y2ggYW55dGhpbmdcbiAgICAgICApICA9IENsb3NlIGNhcHR1cmluZyBncm91cFxuXHQgXFwpICA9IE1hdGNoIGEgY2xvc2UgcGFyZW5zXG5cblx0IC9naSAgPSBHZXQgYWxsIG1hdGNoZXMsIG5vdCB0aGUgZmlyc3QuICBCZSBjYXNlIGluc2Vuc2l0aXZlLlxuXHQgKi9cblx0dmFyIGZpeGVkQ3NzID0gY3NzLnJlcGxhY2UoL3VybFxccypcXCgoKD86W14pKF18XFwoKD86W14pKF0rfFxcKFteKShdKlxcKSkqXFwpKSopXFwpL2dpLCBmdW5jdGlvbihmdWxsTWF0Y2gsIG9yaWdVcmwpIHtcblx0XHQvLyBzdHJpcCBxdW90ZXMgKGlmIHRoZXkgZXhpc3QpXG5cdFx0dmFyIHVucXVvdGVkT3JpZ1VybCA9IG9yaWdVcmxcblx0XHRcdC50cmltKClcblx0XHRcdC5yZXBsYWNlKC9eXCIoLiopXCIkLywgZnVuY3Rpb24obywgJDEpeyByZXR1cm4gJDE7IH0pXG5cdFx0XHQucmVwbGFjZSgvXicoLiopJyQvLCBmdW5jdGlvbihvLCAkMSl7IHJldHVybiAkMTsgfSk7XG5cblx0XHQvLyBhbHJlYWR5IGEgZnVsbCB1cmw/IG5vIGNoYW5nZVxuXHRcdGlmICgvXigjfGRhdGE6fGh0dHA6XFwvXFwvfGh0dHBzOlxcL1xcL3xmaWxlOlxcL1xcL1xcLykvaS50ZXN0KHVucXVvdGVkT3JpZ1VybCkpIHtcblx0XHQgIHJldHVybiBmdWxsTWF0Y2g7XG5cdFx0fVxuXG5cdFx0Ly8gY29udmVydCB0aGUgdXJsIHRvIGEgZnVsbCB1cmxcblx0XHR2YXIgbmV3VXJsO1xuXG5cdFx0aWYgKHVucXVvdGVkT3JpZ1VybC5pbmRleE9mKFwiLy9cIikgPT09IDApIHtcblx0XHQgIFx0Ly9UT0RPOiBzaG91bGQgd2UgYWRkIHByb3RvY29sP1xuXHRcdFx0bmV3VXJsID0gdW5xdW90ZWRPcmlnVXJsO1xuXHRcdH0gZWxzZSBpZiAodW5xdW90ZWRPcmlnVXJsLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHQvLyBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgYmFzZSB1cmxcblx0XHRcdG5ld1VybCA9IGJhc2VVcmwgKyB1bnF1b3RlZE9yaWdVcmw7IC8vIGFscmVhZHkgc3RhcnRzIHdpdGggJy8nXG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlIHRvIGN1cnJlbnQgZGlyZWN0b3J5XG5cdFx0XHRuZXdVcmwgPSBjdXJyZW50RGlyICsgdW5xdW90ZWRPcmlnVXJsLnJlcGxhY2UoL15cXC5cXC8vLCBcIlwiKTsgLy8gU3RyaXAgbGVhZGluZyAnLi8nXG5cdFx0fVxuXG5cdFx0Ly8gc2VuZCBiYWNrIHRoZSBmaXhlZCB1cmwoLi4uKVxuXHRcdHJldHVybiBcInVybChcIiArIEpTT04uc3RyaW5naWZ5KG5ld1VybCkgKyBcIilcIjtcblx0fSk7XG5cblx0Ly8gc2VuZCBiYWNrIHRoZSBmaXhlZCBjc3Ncblx0cmV0dXJuIGZpeGVkQ3NzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvdXJscy5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJjb25zdCBjb21tb24gPSByZXF1aXJlKCdmcmFwcGVqcy9jb21tb24nKTtcbmNvbnN0IFJFU1RDbGllbnQgPSByZXF1aXJlKCdmcmFwcGVqcy9iYWNrZW5kcy9yZXN0X2NsaWVudCcpO1xuY29uc3QgZnJhcHBlID0gcmVxdWlyZSgnZnJhcHBlanMnKTtcbmZyYXBwZS51aSA9IHJlcXVpcmUoJy4vdWknKTtcbmNvbnN0IERlc2sgPSByZXF1aXJlKCcuL2Rlc2snKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXN5bmMgc3RhcnQoe3NlcnZlcn0pIHtcbiAgICAgICAgd2luZG93LmZyYXBwZSA9IGZyYXBwZTtcbiAgICAgICAgZnJhcHBlLmluaXQoKTtcbiAgICAgICAgY29tbW9uLmluaXRfbGlicyhmcmFwcGUpO1xuXG4gICAgICAgIGZyYXBwZS5mZXRjaCA9IHdpbmRvdy5mZXRjaC5iaW5kKCk7XG4gICAgICAgIGZyYXBwZS5kYiA9IGF3YWl0IG5ldyBSRVNUQ2xpZW50KHtzZXJ2ZXI6IHNlcnZlcn0pO1xuXG4gICAgICAgIGZyYXBwZS5mbGFncy5jYWNoZV9kb2NzID0gdHJ1ZTtcblxuICAgICAgICBmcmFwcGUuZGVzayA9IG5ldyBEZXNrKCk7XG4gICAgICAgIGF3YWl0IGZyYXBwZS5sb2dpbigpO1xuICAgIH1cbn07XG5cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL2ZyYXBwZWpzL2NsaWVudC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJjb25zdCB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5jb25zdCBtb2RlbHMgPSByZXF1aXJlKCcuLi9tb2RlbC9tb2RlbHMnKTtcbmNvbnN0IG1vZGVsID0gcmVxdWlyZSgnLi4vbW9kZWwnKTtcbmNvbnN0IF9kb2N1bWVudCA9IHJlcXVpcmUoJy4uL21vZGVsL2RvY3VtZW50Jyk7XG5jb25zdCBtZXRhID0gcmVxdWlyZSgnLi4vbW9kZWwvbWV0YScpO1xuY29uc3QgX3Nlc3Npb24gPSByZXF1aXJlKCcuLi9zZXNzaW9uJyk7XG5jb25zdCBlcnJvcnMgPSByZXF1aXJlKCcuL2Vycm9ycycpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGluaXRfbGlicyhmcmFwcGUpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihmcmFwcGUsIHV0aWxzKTtcbiAgICAgICAgZnJhcHBlLm1vZGVsID0gbW9kZWw7XG4gICAgICAgIGZyYXBwZS5tb2RlbHMgPSBuZXcgbW9kZWxzLk1vZGVscygpO1xuICAgICAgICBmcmFwcGUuZG9jdW1lbnQgPSBfZG9jdW1lbnQ7XG4gICAgICAgIGZyYXBwZS5tZXRhID0gbWV0YTtcbiAgICAgICAgZnJhcHBlLl9zZXNzaW9uID0gX3Nlc3Npb247XG4gICAgICAgIGZyYXBwZS5lcnJvcnMgPSBlcnJvcnM7XG4gICAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL2ZyYXBwZWpzL2NvbW1vbi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgc2x1Zyh0ZXh0KSB7XG4gICAgICAgIHJldHVybiB0ZXh0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvIC9nLCAnXycpO1xuICAgIH0sXG5cbiAgICBhc3luY19oYW5kbGVyKGZuKSB7XG4gICAgICAgIHJldHVybiAocmVxLCByZXMsIG5leHQpID0+IFByb21pc2UucmVzb2x2ZShmbihyZXEsIHJlcywgbmV4dCkpXG4gICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBlcnJvclxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXMoZXJyLnN0YXR1c19jb2RlKS5zZW5kKHsgZXJyb3I6IGVyci5tZXNzYWdlIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIGFzeW5jIHNsZWVwKHNlY29uZHMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dChyZXNvbHZlLCBzZWNvbmRzICogMTAwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL2ZyYXBwZWpzL3V0aWxzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJjb25zdCBwcm9jZXNzID0gcmVxdWlyZSgncHJvY2VzcycpO1xuY29uc3QgZnJhcHBlID0gcmVxdWlyZSgnZnJhcHBlanMnKTtcblxuY2xhc3MgTW9kZWxzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5kYXRhID0ge2RvY3R5cGU6IHt9fTtcbiAgICAgICAgdGhpcy5jb250cm9sbGVycyA9IHt9O1xuICAgICAgICB0aGlzLm1ldGFfY2xhc3NlcyA9IHt9O1xuICAgIH1cblxuICAgIGdldChkb2N0eXBlLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFbZnJhcHBlLnNsdWcoZG9jdHlwZSldW2ZyYXBwZS5zbHVnKG5hbWUpXTtcbiAgICB9XG5cbiAgICBnZXRfY29udHJvbGxlcihkb2N0eXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXJzW2ZyYXBwZS5zbHVnKGRvY3R5cGUpXTtcbiAgICB9XG5cbiAgICBnZXRfbWV0YV9jbGFzcyhkb2N0eXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGFfY2xhc3Nlc1tmcmFwcGUuc2x1Zyhkb2N0eXBlKV0gfHwgZnJhcHBlLm1ldGEuTWV0YTtcbiAgICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IE1vZGVsczogTW9kZWxzIH1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9mcmFwcGVqcy9tb2RlbC9tb2RlbHMuanNcbi8vIG1vZHVsZSBpZCA9IDEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHN0YW5kYXJkX2ZpZWxkczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZG5hbWU6ICduYW1lJywgZmllbGR0eXBlOiAnRGF0YScsIHJlcWQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgZmllbGRuYW1lOiAnb3duZXInLCBmaWVsZHR5cGU6ICdMaW5rJywgcmVxZDogMSwgb3B0aW9uczogJ1VzZXInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkbmFtZTogJ21vZGlmaWVkX2J5JywgZmllbGR0eXBlOiAnTGluaycsIHJlcWQ6IDEsIG9wdGlvbnM6ICdVc2VyJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZG5hbWU6ICdjcmVhdGlvbicsIGZpZWxkdHlwZTogJ0RhdGV0aW1lJywgcmVxZDogMVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZG5hbWU6ICdtb2RpZmllZCcsIGZpZWxkdHlwZTogJ0RhdGV0aW1lJywgcmVxZDogMVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZG5hbWU6ICdrZXl3b3JkcycsIGZpZWxkdHlwZTogJ1RleHQnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkbmFtZTogJ2RvY3N0YXR1cycsIGZpZWxkdHlwZTogJ0ludCcsIHJlcWQ6IDEsIGRlZmF1bHQ6IDBcbiAgICAgICAgfVxuICAgIF0sXG4gICAgY2hpbGRfZmllbGRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkbmFtZTogJ2lkeCcsIGZpZWxkdHlwZTogJ0ludCcsIHJlcWQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgZmllbGRuYW1lOiAncGFyZW50JywgZmllbGR0eXBlOiAnRGF0YScsIHJlcWQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgZmllbGRuYW1lOiAncGFyZW50dHlwZScsIGZpZWxkdHlwZTogJ0xpbmsnLCByZXFkOiAxLCBvcHRpb25zOiAnRG9jVHlwZSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgZmllbGRuYW1lOiAncGFyZW50ZmllbGQnLCBmaWVsZHR5cGU6ICdEYXRhJywgcmVxZDogMVxuICAgICAgICB9XG4gICAgXVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9mcmFwcGVqcy9tb2RlbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiY29uc3QgRG9jdW1lbnQgPSByZXF1aXJlKCcuL2RvY3VtZW50JykuRG9jdW1lbnQ7XG5jb25zdCBmcmFwcGUgPSByZXF1aXJlKCdmcmFwcGVqcycpO1xuXG5jbGFzcyBNZXRhIGV4dGVuZHMgRG9jdW1lbnQge1xuICAgIGNvbnN0cnVjdG9yKGRhdGEpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMuZXZlbnRfaGFuZGxlcnMgPSB7fTtcbiAgICAgICAgdGhpcy5saXN0X29wdGlvbnMgPSB7XG4gICAgICAgICAgICBmaWVsZHM6IFsnbmFtZScsICdtb2RpZmllZCddXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLnNldHVwX21ldGEpICB7XG4gICAgICAgICAgICB0aGlzLnNldHVwX21ldGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldF9maWVsZChmaWVsZG5hbWUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkX21hcCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZF9tYXAgPSB7fTtcbiAgICAgICAgICAgIGZvciAobGV0IGRmIG9mIHRoaXMuZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZF9tYXBbZGYuZmllbGRuYW1lXSA9IGRmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkX21hcFtmaWVsZG5hbWVdO1xuICAgIH1cblxuICAgIG9uKGtleSwgZm4pIHtcbiAgICAgICAgaWYgKCF0aGlzLmV2ZW50X2hhbmRsZXJzW2tleV0pIHtcbiAgICAgICAgICAgIHRoaXMuZXZlbnRfaGFuZGxlcnNba2V5XSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXZlbnRfaGFuZGxlcnNba2V5XS5wdXNoKGZuKTtcbiAgICB9XG5cbiAgICBhc3luYyBzZXQoZmllbGRuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzW2ZpZWxkbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyKGZpZWxkbmFtZSk7XG4gICAgfVxuXG4gICAgZ2V0KGZpZWxkbmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpc1tmaWVsZG5hbWVdO1xuICAgIH1cblxuICAgIGdldF92YWxpZF9maWVsZHMoKSB7XG4gICAgICAgIGlmICghdGhpcy5fdmFsaWRfZmllbGRzKSB7XG4gICAgICAgICAgICB0aGlzLl92YWxpZF9maWVsZHMgPSBbXTtcblxuICAgICAgICAgICAgLy8gc3RhbmRhcmQgZmllbGRzXG4gICAgICAgICAgICBmb3IgKGxldCBkZiBvZiBmcmFwcGUubW9kZWwuc3RhbmRhcmRfZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRfZmllbGRzLnB1c2goZGYpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBwYXJlbnQgZmllbGRzXG4gICAgICAgICAgICBpZiAodGhpcy5pc3RhYmxlKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZGYgb2YgZnJhcHBlLm1vZGVsLmNoaWxkX2ZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWxpZF9maWVsZHMucHVzaChkZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBkb2N0eXBlIGZpZWxkc1xuICAgICAgICAgICAgZm9yIChsZXQgZGYgb2YgdGhpcy5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZnJhcHBlLmRiLnR5cGVfbWFwW2RmLmZpZWxkdHlwZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRfZmllbGRzLnB1c2goZGYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl92YWxpZF9maWVsZHM7XG4gICAgfVxuXG4gICAgZ2V0X2tleXdvcmRfZmllbGRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXl3b3JkX2ZpZWxkcyB8fCB0aGlzLm1ldGEuZmllbGRzLmZpbHRlcihkZiA9PiBkZi5yZXFkKS5tYXAoZGYgPT4gZGYuZmllbGRuYW1lKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZV9zZWxlY3QoZGYsIHZhbHVlKSB7XG4gICAgICAgIGxldCBvcHRpb25zID0gZGYub3B0aW9ucztcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgLy8gdmFsdWVzIGdpdmVuIGFzIHN0cmluZ1xuICAgICAgICAgICAgb3B0aW9ucyA9IGRmLm9wdGlvbnMuc3BsaXQoJ1xcbicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghb3B0aW9ucy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBmcmFwcGUuZXJyb3JzLlZhbHVlRXJyb3IoYCR7dmFsdWV9IG11c3QgYmUgb25lIG9mICR7b3B0aW9ucy5qb2luKFwiLCBcIil9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyB0cmlnZ2VyKGtleSwgZXZlbnQgPSB7fSkge1xuXG4gICAgICAgIE9iamVjdC5hc3NpZ24oZXZlbnQsIHtcbiAgICAgICAgICAgIGRvYzogdGhpcyxcbiAgICAgICAgICAgIG5hbWU6IGtleVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5ldmVudF9oYW5kbGVyc1trZXldKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBoYW5kbGVyIG9mIHRoaXMuZXZlbnRfaGFuZGxlcnNba2V5XSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGhhbmRsZXIoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY29sbGVjdGlvbnNcbiAgICBhc3luYyBnZXRfbGlzdCh7c3RhcnQsIGxpbWl0PTIwLCBmaWx0ZXJzfSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZnJhcHBlLmRiLmdldF9hbGwoe1xuICAgICAgICAgICAgZG9jdHlwZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgZmllbGRzOiB0aGlzLmxpc3Rfb3B0aW9ucy5maWVsZHMsXG4gICAgICAgICAgICBmaWx0ZXJzOiBmaWx0ZXJzLFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgbGltaXQ6IGxpbWl0XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldF9yb3dfaHRtbChkYXRhKSB7XG4gICAgICAgIHJldHVybiBgPGEgaHJlZj1cIi92aWV3LyR7dGhpcy5uYW1lfS8ke2RhdGEubmFtZX1cIj4ke2RhdGEubmFtZX08L2E+YDtcbiAgICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IE1ldGE6IE1ldGEgfVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL2ZyYXBwZWpzL21vZGVsL21ldGEuanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImNvbnN0IGZyYXBwZSA9IHJlcXVpcmUoJ2ZyYXBwZWpzJyk7XG5cbmNsYXNzIFNlc3Npb24ge1xuICAgIGNvbnN0cnVjdG9yKHVzZXIsIHVzZXJfa2V5KSB7XG4gICAgICAgIHRoaXMudXNlciA9IHVzZXIgfHwgJ2d1ZXN0JztcbiAgICAgICAgaWYgKHRoaXMudXNlciAhPT0gJ2d1ZXN0Jykge1xuICAgICAgICAgICAgdGhpcy5sb2dpbih1c2VyX2tleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2dpbih1c2VyX2tleSkge1xuICAgICAgICAvLyBjb3VsZCBiZSBwYXNzd29yZCwgc2Vzc2lvbmlkLCBvdHBcbiAgICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IFNlc3Npb246IFNlc3Npb24gfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9mcmFwcGVqcy9zZXNzaW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJjbGFzcyBCYXNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG5cdGNvbnN0cnVjdG9yKHN0YXR1c19jb2RlLCAuLi5wYXJhbXMpIHtcblx0XHRzdXBlciguLi5wYXJhbXMpO1xuXHRcdHRoaXMuc3RhdHVzX2NvZGUgPSBzdGF0dXNfY29kZTtcblx0fVxufVxuXG5jbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBCYXNlRXJyb3Ige1xuXHRjb25zdHJ1Y3RvciguLi5wYXJhbXMpIHsgc3VwZXIoNDE3LCAuLi5wYXJhbXMpOyB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuXHRWYWxpZGF0aW9uRXJyb3I6IFZhbGlkYXRpb25FcnJvcixcblx0VmFsdWVFcnJvcjogY2xhc3MgVmFsdWVFcnJvciBleHRlbmRzIFZhbGlkYXRpb25FcnJvciB7IH0sXG5cdE5vdEZvdW5kOiBjbGFzcyBOb3RGb3VuZCBleHRlbmRzIEJhc2VFcnJvciB7XG5cdFx0Y29uc3RydWN0b3IoLi4ucGFyYW1zKSB7IHN1cGVyKDQwNCwgLi4ucGFyYW1zKTsgfVxuXHR9LFxuXHRGb3JiaWRkZW46IGNsYXNzIEZvcmJpZGRlbiBleHRlbmRzIEJhc2VFcnJvciB7XG5cdFx0Y29uc3RydWN0b3IoLi4ucGFyYW1zKSB7IHN1cGVyKDQwMywgLi4ucGFyYW1zKTsgfVxuXHR9LFxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vZnJhcHBlanMvY29tbW9uL2Vycm9ycy5qc1xuLy8gbW9kdWxlIGlkID0gMTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiY29uc3QgZnJhcHBlID0gcmVxdWlyZSgnZnJhcHBlanMnKTtcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgUkVTVENsaWVudCB7XG4gICAgY29uc3RydWN0b3Ioe3NlcnZlciwgcHJvdG9jb2w9J2h0dHAnfSkge1xuICAgICAgICB0aGlzLnNlcnZlciA9IHNlcnZlcjtcbiAgICAgICAgdGhpcy5wcm90b2NvbCA9IHByb3RvY29sO1xuXG4gICAgICAgIHRoaXMuaW5pdF90eXBlX21hcCgpO1xuXG4gICAgICAgIHRoaXMuanNvbl9oZWFkZXJzID0ge1xuICAgICAgICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbm5lY3QoKSB7XG5cbiAgICB9XG5cbiAgICBhc3luYyBpbnNlcnQoZG9jdHlwZSwgZG9jKSB7XG4gICAgICAgIGRvYy5kb2N0eXBlID0gZG9jdHlwZTtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMucHJvdG9jb2wgKyAnOi8vJyArIHBhdGguam9pbih0aGlzLnNlcnZlciwgYC9hcGkvcmVzb3VyY2UvJHtmcmFwcGUuc2x1Zyhkb2N0eXBlKX1gKTtcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZnJhcHBlLmZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmpzb25faGVhZGVycyxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRvYylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXQoZG9jdHlwZSwgbmFtZSkge1xuICAgICAgICBsZXQgdXJsID0gdGhpcy5wcm90b2NvbCArICc6Ly8nICsgcGF0aC5qb2luKHRoaXMuc2VydmVyLCBgL2FwaS9yZXNvdXJjZS8ke2ZyYXBwZS5zbHVnKGRvY3R5cGUpfS8ke25hbWV9YCk7XG4gICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZyYXBwZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmpzb25faGVhZGVyc1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRfYWxsKHtkb2N0eXBlLCBmaWVsZHMsIGZpbHRlcnMsIHN0YXJ0LCBsaW1pdCwgc29ydF9ieSwgb3JkZXJ9KSB7XG4gICAgICAgIGxldCB1cmwgPSB0aGlzLnByb3RvY29sICsgJzovLycgKyBwYXRoLmpvaW4odGhpcy5zZXJ2ZXIsIGAvYXBpL3Jlc291cmNlLyR7ZnJhcHBlLnNsdWcoZG9jdHlwZSl9YCk7XG5cbiAgICAgICAgdXJsID0gdXJsICsgXCI/XCIgKyB0aGlzLmdldF9xdWVyeV9zdHJpbmcoe1xuICAgICAgICAgICAgZmllbGRzOiBKU09OLnN0cmluZ2lmeShmaWVsZHMpLFxuICAgICAgICAgICAgZmlsdGVyczogSlNPTi5zdHJpbmdpZnkoZmlsdGVycyksXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICBsaW1pdDogbGltaXQsXG4gICAgICAgICAgICBzb3J0X2J5OiBzb3J0X2J5LFxuICAgICAgICAgICAgb3JkZXI6IG9yZGVyXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZyYXBwZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmpzb25faGVhZGVyc1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgIH1cblxuICAgIGFzeW5jIHVwZGF0ZShkb2N0eXBlLCBkb2MpIHtcbiAgICAgICAgZG9jLmRvY3R5cGUgPSBkb2N0eXBlO1xuICAgICAgICBsZXQgdXJsID0gdGhpcy5wcm90b2NvbCArICc6Ly8nICsgcGF0aC5qb2luKHRoaXMuc2VydmVyLCBgL2FwaS9yZXNvdXJjZS8ke2ZyYXBwZS5zbHVnKGRvY3R5cGUpfS8ke2RvYy5uYW1lfWApO1xuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmcmFwcGUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgICAgICAgaGVhZGVyczogdGhpcy5qc29uX2hlYWRlcnMsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkb2MpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZGVsZXRlKGRvY3R5cGUsIG5hbWUpIHtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMucHJvdG9jb2wgKyAnOi8vJyArIHBhdGguam9pbih0aGlzLnNlcnZlciwgYC9hcGkvcmVzb3VyY2UvJHtmcmFwcGUuc2x1Zyhkb2N0eXBlKX0vJHtuYW1lfWApO1xuXG4gICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZyYXBwZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmpzb25faGVhZGVyc1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIH1cblxuICAgIGdldF9xdWVyeV9zdHJpbmcocGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhwYXJhbXMpXG4gICAgICAgICAgICAubWFwKGsgPT4gcGFyYW1zW2tdICE9IG51bGwgPyBlbmNvZGVVUklDb21wb25lbnQoaykgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocGFyYW1zW2tdKSA6IG51bGwpXG4gICAgICAgICAgICAuZmlsdGVyKHYgPT4gdilcbiAgICAgICAgICAgIC5qb2luKCcmJyk7XG4gICAgfVxuXG4gICAgaW5pdF90eXBlX21hcCgpIHtcbiAgICAgICAgdGhpcy50eXBlX21hcCA9IHtcbiAgICAgICAgICAgICdDdXJyZW5jeSc6ICAgICAgICB0cnVlXG4gICAgICAgICAgICAsJ0ludCc6ICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgLCdGbG9hdCc6ICAgICAgICB0cnVlXG4gICAgICAgICAgICAsJ1BlcmNlbnQnOiAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgLCdDaGVjayc6ICAgICAgICB0cnVlXG4gICAgICAgICAgICAsJ1NtYWxsIFRleHQnOiAgICB0cnVlXG4gICAgICAgICAgICAsJ0xvbmcgVGV4dCc6ICAgIHRydWVcbiAgICAgICAgICAgICwnQ29kZSc6ICAgICAgICB0cnVlXG4gICAgICAgICAgICAsJ1RleHQgRWRpdG9yJzogICAgdHJ1ZVxuICAgICAgICAgICAgLCdEYXRlJzogICAgICAgIHRydWVcbiAgICAgICAgICAgICwnRGF0ZXRpbWUnOiAgICB0cnVlXG4gICAgICAgICAgICAsJ1RpbWUnOiAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgLCdUZXh0JzogICAgICAgIHRydWVcbiAgICAgICAgICAgICwnRGF0YSc6ICAgICAgICB0cnVlXG4gICAgICAgICAgICAsJ0xpbmsnOiAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgLCdEeW5hbWljIExpbmsnOnRydWVcbiAgICAgICAgICAgICwnUGFzc3dvcmQnOiAgICB0cnVlXG4gICAgICAgICAgICAsJ1NlbGVjdCc6ICAgICAgICB0cnVlXG4gICAgICAgICAgICAsJ1JlYWQgT25seSc6ICAgIHRydWVcbiAgICAgICAgICAgICwnQXR0YWNoJzogICAgICAgIHRydWVcbiAgICAgICAgICAgICwnQXR0YWNoIEltYWdlJzp0cnVlXG4gICAgICAgICAgICAsJ1NpZ25hdHVyZSc6ICAgIHRydWVcbiAgICAgICAgICAgICwnQ29sb3InOiAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgLCdCYXJjb2RlJzogICAgICAgIHRydWVcbiAgICAgICAgICAgICwnR2VvbG9jYXRpb24nOiAgICB0cnVlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcblxuICAgIH1cblxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL2ZyYXBwZWpzL2JhY2tlbmRzL3Jlc3RfY2xpZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gcmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIGFycmF5IHdpdGggZGlyZWN0b3J5IG5hbWVzIHRoZXJlXG4vLyBtdXN0IGJlIG5vIHNsYXNoZXMsIGVtcHR5IGVsZW1lbnRzLCBvciBkZXZpY2UgbmFtZXMgKGM6XFwpIGluIHRoZSBhcnJheVxuLy8gKHNvIGFsc28gbm8gbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcyAtIGl0IGRvZXMgbm90IGRpc3Rpbmd1aXNoXG4vLyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcGF0aHMpXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheShwYXJ0cywgYWxsb3dBYm92ZVJvb3QpIHtcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGxhc3QgPSBwYXJ0c1tpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzO1xufVxuXG4vLyBTcGxpdCBhIGZpbGVuYW1lIGludG8gW3Jvb3QsIGRpciwgYmFzZW5hbWUsIGV4dF0sIHVuaXggdmVyc2lvblxuLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy5cbnZhciBzcGxpdFBhdGhSZSA9XG4gICAgL14oXFwvP3wpKFtcXHNcXFNdKj8pKCg/OlxcLnsxLDJ9fFteXFwvXSs/fCkoXFwuW14uXFwvXSp8KSkoPzpbXFwvXSopJC87XG52YXIgc3BsaXRQYXRoID0gZnVuY3Rpb24oZmlsZW5hbWUpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aFJlLmV4ZWMoZmlsZW5hbWUpLnNsaWNlKDEpO1xufTtcblxuLy8gcGF0aC5yZXNvbHZlKFtmcm9tIC4uLl0sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZXNvbHZlID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNvbHZlZFBhdGggPSAnJyxcbiAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIHZhciBwYXRoID0gKGkgPj0gMCkgPyBhcmd1bWVudHNbaV0gOiBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBhbmQgaW52YWxpZCBlbnRyaWVzXG4gICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9IGVsc2UgaWYgKCFwYXRoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBwYXRoICsgJy8nICsgcmVzb2x2ZWRQYXRoO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xuICB9XG5cbiAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcGF0aCBzaG91bGQgYmUgcmVzb2x2ZWQgdG8gYSBmdWxsIGFic29sdXRlIHBhdGgsIGJ1dFxuICAvLyBoYW5kbGUgcmVsYXRpdmUgcGF0aHMgdG8gYmUgc2FmZSAobWlnaHQgaGFwcGVuIHdoZW4gcHJvY2Vzcy5jd2QoKSBmYWlscylcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHJlc29sdmVkUGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFyZXNvbHZlZEFic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgcmV0dXJuICgocmVzb2x2ZWRBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHJlc29sdmVkUGF0aCkgfHwgJy4nO1xufTtcblxuLy8gcGF0aC5ub3JtYWxpemUocGF0aClcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMubm9ybWFsaXplID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgaXNBYnNvbHV0ZSA9IGV4cG9ydHMuaXNBYnNvbHV0ZShwYXRoKSxcbiAgICAgIHRyYWlsaW5nU2xhc2ggPSBzdWJzdHIocGF0aCwgLTEpID09PSAnLyc7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFpc0Fic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgaWYgKCFwYXRoICYmICFpc0Fic29sdXRlKSB7XG4gICAgcGF0aCA9ICcuJztcbiAgfVxuICBpZiAocGF0aCAmJiB0cmFpbGluZ1NsYXNoKSB7XG4gICAgcGF0aCArPSAnLyc7XG4gIH1cblxuICByZXR1cm4gKGlzQWJzb2x1dGUgPyAnLycgOiAnJykgKyBwYXRoO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5pc0Fic29sdXRlID0gZnVuY3Rpb24ocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMuam9pbiA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcGF0aHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICByZXR1cm4gZXhwb3J0cy5ub3JtYWxpemUoZmlsdGVyKHBhdGhzLCBmdW5jdGlvbihwLCBpbmRleCkge1xuICAgIGlmICh0eXBlb2YgcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfVxuICAgIHJldHVybiBwO1xuICB9KS5qb2luKCcvJykpO1xufTtcblxuXG4vLyBwYXRoLnJlbGF0aXZlKGZyb20sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZWxhdGl2ZSA9IGZ1bmN0aW9uKGZyb20sIHRvKSB7XG4gIGZyb20gPSBleHBvcnRzLnJlc29sdmUoZnJvbSkuc3Vic3RyKDEpO1xuICB0byA9IGV4cG9ydHMucmVzb2x2ZSh0bykuc3Vic3RyKDEpO1xuXG4gIGZ1bmN0aW9uIHRyaW0oYXJyKSB7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBmb3IgKDsgc3RhcnQgPCBhcnIubGVuZ3RoOyBzdGFydCsrKSB7XG4gICAgICBpZiAoYXJyW3N0YXJ0XSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSBhcnIubGVuZ3RoIC0gMTtcbiAgICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7XG4gICAgICBpZiAoYXJyW2VuZF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpO1xuICB9XG5cbiAgdmFyIGZyb21QYXJ0cyA9IHRyaW0oZnJvbS5zcGxpdCgnLycpKTtcbiAgdmFyIHRvUGFydHMgPSB0cmltKHRvLnNwbGl0KCcvJykpO1xuXG4gIHZhciBsZW5ndGggPSBNYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0aCk7XG4gIHZhciBzYW1lUGFydHNMZW5ndGggPSBsZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZnJvbVBhcnRzW2ldICE9PSB0b1BhcnRzW2ldKSB7XG4gICAgICBzYW1lUGFydHNMZW5ndGggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFyIG91dHB1dFBhcnRzID0gW107XG4gIGZvciAodmFyIGkgPSBzYW1lUGFydHNMZW5ndGg7IGkgPCBmcm9tUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRwdXRQYXJ0cy5wdXNoKCcuLicpO1xuICB9XG5cbiAgb3V0cHV0UGFydHMgPSBvdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNMZW5ndGgpKTtcblxuICByZXR1cm4gb3V0cHV0UGFydHMuam9pbignLycpO1xufTtcblxuZXhwb3J0cy5zZXAgPSAnLyc7XG5leHBvcnRzLmRlbGltaXRlciA9ICc6JztcblxuZXhwb3J0cy5kaXJuYW1lID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgcmVzdWx0ID0gc3BsaXRQYXRoKHBhdGgpLFxuICAgICAgcm9vdCA9IHJlc3VsdFswXSxcbiAgICAgIGRpciA9IHJlc3VsdFsxXTtcblxuICBpZiAoIXJvb3QgJiYgIWRpcikge1xuICAgIC8vIE5vIGRpcm5hbWUgd2hhdHNvZXZlclxuICAgIHJldHVybiAnLic7XG4gIH1cblxuICBpZiAoZGlyKSB7XG4gICAgLy8gSXQgaGFzIGEgZGlybmFtZSwgc3RyaXAgdHJhaWxpbmcgc2xhc2hcbiAgICBkaXIgPSBkaXIuc3Vic3RyKDAsIGRpci5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJldHVybiByb290ICsgZGlyO1xufTtcblxuXG5leHBvcnRzLmJhc2VuYW1lID0gZnVuY3Rpb24ocGF0aCwgZXh0KSB7XG4gIHZhciBmID0gc3BsaXRQYXRoKHBhdGgpWzJdO1xuICAvLyBUT0RPOiBtYWtlIHRoaXMgY29tcGFyaXNvbiBjYXNlLWluc2Vuc2l0aXZlIG9uIHdpbmRvd3M/XG4gIGlmIChleHQgJiYgZi5zdWJzdHIoLTEgKiBleHQubGVuZ3RoKSA9PT0gZXh0KSB7XG4gICAgZiA9IGYuc3Vic3RyKDAsIGYubGVuZ3RoIC0gZXh0Lmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIGY7XG59O1xuXG5cbmV4cG9ydHMuZXh0bmFtZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aChwYXRoKVszXTtcbn07XG5cbmZ1bmN0aW9uIGZpbHRlciAoeHMsIGYpIHtcbiAgICBpZiAoeHMuZmlsdGVyKSByZXR1cm4geHMuZmlsdGVyKGYpO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmKHhzW2ldLCBpLCB4cykpIHJlcy5wdXNoKHhzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuLy8gU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIgLSBuZWdhdGl2ZSBpbmRleCBkb24ndCB3b3JrIGluIElFOFxudmFyIHN1YnN0ciA9ICdhYicuc3Vic3RyKC0xKSA9PT0gJ2InXG4gICAgPyBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7IHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pIH1cbiAgICA6IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHtcbiAgICAgICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSBzdHIubGVuZ3RoICsgc3RhcnQ7XG4gICAgICAgIHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pO1xuICAgIH1cbjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3BhdGgtYnJvd3NlcmlmeS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiY29uc3QgZnJhcHBlID0gcmVxdWlyZSgnZnJhcHBlanMnKTtcbmNvbnN0IERyb3Bkb3duID0gcmVxdWlyZSgnLi9kcm9wZG93bicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBhZGQodGFnLCBjbGFzc05hbWUsIHBhcmVudCkge1xuICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgYyBvZiBjbGFzc05hbWUuc3BsaXQoJyAnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkX2NsYXNzKGVsZW1lbnQsIGMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9LFxuXG4gICAgcmVtb3ZlKGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuICAgIH0sXG5cbiAgICBhZGRfY2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdCkge1xuICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSArPSBcIiBcIiArIGNsYXNzTmFtZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICByZW1vdmVfY2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdCkge1xuICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UobmV3IFJlZ0V4cCgnKF58XFxcXGIpJyArIGNsYXNzTmFtZS5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcoXFxcXGJ8JCknLCAnZ2knKSwgJyAnKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB0b2dnbGUoZWxlbWVudCwgZGVmYXVsdF9kaXNwbGF5ID0gJycpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gZWxlbWVudC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgPyBkZWZhdWx0X2Rpc3BsYXkgOiAnbm9uZSc7XG4gICAgfSxcblxuICAgIG1ha2VfZHJvcGRvd24obGFiZWwsIHBhcmVudCwgYnRuX2NsYXNzID0gJ2J0bi1zZWNvbmRhcnknKSB7XG4gICAgICAgIHJldHVybiBuZXcgRHJvcGRvd24oe3BhcmVudDogcGFyZW50LCBsYWJlbDpsYWJlbCwgYnRuX2NsYXNzOmJ0bl9jbGFzc30pO1xuICAgIH1cblxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL2ZyYXBwZWpzL2NsaWVudC91aS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiY29uc3QgZnJhcHBlID0gcmVxdWlyZSgnZnJhcHBlanMnKTtcblxuY2xhc3MgRHJvcGRvd24ge1xuICAgIGNvbnN0cnVjdG9yKHtwYXJlbnQsIGxhYmVsLCBidG5fY2xhc3MgPSAnYnRuLXNlY29uZGFyeScsIGl0ZW1zID0gW119KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgYXJndW1lbnRzWzBdKTtcblxuICAgICAgICB0aGlzLmRyb3Bkb3duX2l0ZW1zID0gW107XG4gICAgICAgIHRoaXMuc2V0dXBfYmFja2dyb3VuZF9jbGljaygpO1xuICAgICAgICB0aGlzLm1ha2UoKTtcblxuICAgICAgICAvLyBpbml0IGl0ZW1zXG4gICAgICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICAgICAgICBmb3IgKGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkX2l0ZW0oaXRlbS5sYWJlbCwgaXRlbS5hY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0dXBfYmFja2dyb3VuZF9jbGljaygpIHtcbiAgICAgICAgaWYgKCFkb2N1bWVudC5kcm9wZG93bl9zZXR1cCkge1xuICAgICAgICAgICAgZnJhcHBlLmRyb3Bkb3ducyA9IFtdO1xuICAgICAgICAgICAgLy8gc2V0dXAgaGlkaW5nIGFsbCBkcm9wZG93bnMgb24gY2xpY2tcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZCBvZiBmcmFwcGUuZHJvcGRvd25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkLmJ1dHRvbiAhPT0gZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkLmNvbGxhcHNlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRvY3VtZW50LmRyb3Bkb3duX3NldHVwID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBmcmFwcGUuZHJvcGRvd25zLnB1c2godGhpcyk7XG4gICAgfVxuXG4gICAgbWFrZSgpIHtcbiAgICAgICAgdGhpcy5kcm9wZG93biA9IGZyYXBwZS51aS5hZGQoJ2RpdicsICdkcm9wZG93bicsIHRoaXMucGFyZW50KTtcbiAgICAgICAgdGhpcy5tYWtlX2J1dHRvbigpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duX21lbnUgPSBmcmFwcGUudWkuYWRkKCdkaXYnLCAnZHJvcGRvd24tbWVudScsIHRoaXMuZHJvcGRvd24pO1xuICAgIH1cblxuICAgIG1ha2VfYnV0dG9uKCkge1xuICAgICAgICB0aGlzLmJ1dHRvbiA9IGZyYXBwZS51aS5hZGQoJ2J1dHRvbicsICdidG4gJyArIHRoaXMuYnRuX2NsYXNzLFxuICAgICAgICAgICAgdGhpcy5kcm9wZG93bik7XG4gICAgICAgIGZyYXBwZS51aS5hZGRfY2xhc3ModGhpcy5idXR0b24sICdkcm9wZG93bi10b2dnbGUnKTtcbiAgICAgICAgdGhpcy5idXR0b24udGV4dENvbnRlbnQgPSB0aGlzLmxhYmVsO1xuICAgICAgICB0aGlzLmJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGV4cGFuZCgpIHtcbiAgICAgICAgdGhpcy5kcm9wZG93bi5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25fbWVudS5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7XG4gICAgfVxuXG4gICAgY29sbGFwc2UoKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duX21lbnUuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpO1xuICAgIH1cblxuICAgIHRvZ2dsZSgpIHtcbiAgICAgICAgdGhpcy5kcm9wZG93bi5jbGFzc0xpc3QudG9nZ2xlKCdzaG93Jyk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25fbWVudS5jbGFzc0xpc3QudG9nZ2xlKCdzaG93Jyk7XG4gICAgfVxuXG4gICAgYWRkX2l0ZW0obGFiZWwsIGFjdGlvbikge1xuICAgICAgICBsZXQgaXRlbSA9IGZyYXBwZS51aS5hZGQoJ2J1dHRvbicsICdkcm9wZG93bi1pdGVtJywgdGhpcy5kcm9wZG93bl9tZW51KTtcbiAgICAgICAgaXRlbS50ZXh0Q29udGVudCA9IGxhYmVsO1xuICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpdGVtLnNyYyA9IGFjdGlvbjtcbiAgICAgICAgICAgIGl0ZW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZnJhcHBlLnJvdXRlci5zZXRfcm91dGUoYWN0aW9uKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IGFjdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyb3Bkb3duX2l0ZW1zLnB1c2goaXRlbSk7XG4gICAgfVxuXG4gICAgZmxvYXRfcmlnaHQoKSB7XG4gICAgICAgIGZyYXBwZS51aS5hZGRfY2xhc3ModGhpcy5kcm9wZG93biwgJ2Zsb2F0LXJpZ2h0Jyk7XG4gICAgICAgIGZyYXBwZS51aS5hZGRfY2xhc3ModGhpcy5kcm9wZG93bl9tZW51LCAnZHJvcGRvd24tbWVudS1yaWdodCcpO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEcm9wZG93bjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9mcmFwcGVqcy9jbGllbnQvdWkvZHJvcGRvd24uanNcbi8vIG1vZHVsZSBpZCA9IDIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImNvbnN0IGZyYXBwZSA9IHJlcXVpcmUoJ2ZyYXBwZWpzJyk7XG5jb25zdCBTZWFyY2ggPSByZXF1aXJlKCcuL3NlYXJjaCcpO1xuY29uc3QgUm91dGVyID0gcmVxdWlyZSgnZnJhcHBlanMvY29tbW9uL3JvdXRlcicpO1xuY29uc3QgUGFnZSA9IHJlcXVpcmUoJ2ZyYXBwZWpzL2NsaWVudC92aWV3L3BhZ2UnKTtcbmNvbnN0IExpc3QgPSByZXF1aXJlKCdmcmFwcGVqcy9jbGllbnQvdmlldy9saXN0Jyk7XG5jb25zdCBGb3JtID0gcmVxdWlyZSgnZnJhcHBlanMvY2xpZW50L3ZpZXcvZm9ybScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzIERlc2sge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBmcmFwcGUucm91dGVyID0gbmV3IFJvdXRlcigpO1xuICAgICAgICBmcmFwcGUucm91dGVyLmxpc3RlbigpO1xuXG4gICAgICAgIHRoaXMud3JhcHBlciA9IGZyYXBwZS51aS5hZGQoJ2RpdicsICdkZXNrJywgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpKTtcblxuICAgICAgICB0aGlzLm5hdiA9IGZyYXBwZS51aS5hZGQoJ2hlYWRlcicsICduYXYgdGV4dC1jZW50ZXInLCB0aGlzLndyYXBwZXIpO1xuXG4gICAgICAgIHRoaXMuYm9keSA9IGZyYXBwZS51aS5hZGQoJ2RpdicsICdkZXNrLWJvZHkgdHdvLWNvbHVtbicsIHRoaXMud3JhcHBlcik7XG4gICAgICAgIHRoaXMuc2lkZWJhciA9IGZyYXBwZS51aS5hZGQoJ2RpdicsICdzaWRlYmFyJywgdGhpcy5ib2R5KTtcbiAgICAgICAgdGhpcy5tYWluID0gZnJhcHBlLnVpLmFkZCgnZGl2JywgJ21haW4nLCB0aGlzLmJvZHkpO1xuXG4gICAgICAgIHRoaXMuc2lkZWJhcl9pdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLnBhZ2VzID0ge1xuICAgICAgICAgICAgbGlzdHM6IHt9LFxuICAgICAgICAgICAgZm9ybXM6IHt9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5pbml0X3JvdXRlcygpO1xuXG4gICAgICAgIC8vIHRoaXMuc2VhcmNoID0gbmV3IFNlYXJjaCh0aGlzLm5hdik7XG4gICAgfVxuXG4gICAgaW5pdF9yb3V0ZXMoKSB7XG4gICAgICAgIGZyYXBwZS5yb3V0ZXIuYWRkKCdsaXN0Lzpkb2N0eXBlJywgYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgbGV0IHBhZ2UgPSB0aGlzLmdldF9saXN0X3BhZ2UocGFyYW1zLmRvY3R5cGUpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5zaG93KHBhcmFtcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZyYXBwZS5yb3V0ZXIuYWRkKCdlZGl0Lzpkb2N0eXBlLzpuYW1lJywgYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgbGV0IHBhZ2UgPSB0aGlzLmdldF9mb3JtX3BhZ2UocGFyYW1zLmRvY3R5cGUpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5zaG93KHBhcmFtcyk7XG4gICAgICAgIH0pXG5cbiAgICAgICAgZnJhcHBlLnJvdXRlci5hZGQoJ25ldy86ZG9jdHlwZScsIGFzeW5jIChwYXJhbXMpID0+IHtcbiAgICAgICAgICAgIGxldCBkb2MgPSBhd2FpdCBmcmFwcGUuZ2V0X25ld19kb2MocGFyYW1zLmRvY3R5cGUpO1xuICAgICAgICAgICAgZnJhcHBlLnJvdXRlci5zZXRfcm91dGUoJ2VkaXQnLCBkb2MuZG9jdHlwZSwgZG9jLm5hbWUpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIGdldF9saXN0X3BhZ2UoZG9jdHlwZSkge1xuICAgICAgICBpZiAoIXRoaXMucGFnZXMubGlzdHNbZG9jdHlwZV0pIHtcbiAgICAgICAgICAgIGxldCBwYWdlID0gbmV3IFBhZ2UoJ0xpc3QgJyArIGRvY3R5cGUpO1xuICAgICAgICAgICAgcGFnZS5saXN0ID0gbmV3IExpc3Qoe1xuICAgICAgICAgICAgICAgIGRvY3R5cGU6IGRvY3R5cGUsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBwYWdlLmJvZHlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcGFnZS5vbignc2hvdycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBwYWdlLmxpc3QucnVuKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucGFnZXMubGlzdHNbZG9jdHlwZV0gPSBwYWdlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2VzLmxpc3RzW2RvY3R5cGVdO1xuICAgIH1cblxuICAgIGdldF9mb3JtX3BhZ2UoZG9jdHlwZSkge1xuICAgICAgICBpZiAoIXRoaXMucGFnZXMuZm9ybXNbZG9jdHlwZV0pIHtcbiAgICAgICAgICAgIGxldCBwYWdlID0gbmV3IFBhZ2UoJ0VkaXQgJyArIGRvY3R5cGUpO1xuICAgICAgICAgICAgcGFnZS5mb3JtID0gbmV3IEZvcm0oe1xuICAgICAgICAgICAgICAgIGRvY3R5cGU6IGRvY3R5cGUsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBwYWdlLmJvZHlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcGFnZS5vbignc2hvdycsIGFzeW5jIChwYXJhbXMpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBwYWdlLmRvYyA9IGF3YWl0IGZyYXBwZS5nZXRfZG9jKHBhcmFtcy5kb2N0eXBlLCBwYXJhbXMubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2UuZm9ybS51c2UocGFnZS5kb2MpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZS5yZW5kZXJfZXJyb3IoZS5zdGF0dXNfY29kZSwgZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucGFnZXMuZm9ybXNbZG9jdHlwZV0gPSBwYWdlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2VzLmZvcm1zW2RvY3R5cGVdO1xuICAgIH1cblxuICAgIGFkZF9zaWRlYmFyX2l0ZW0obGFiZWwsIGFjdGlvbikge1xuICAgICAgICBsZXQgaXRlbSA9IGZyYXBwZS51aS5hZGQoJ2EnLCAnJywgZnJhcHBlLnVpLmFkZCgncCcsIG51bGwsIGZyYXBwZS5kZXNrLnNpZGViYXIpKTtcbiAgICAgICAgaXRlbS50ZXh0Q29udGVudCA9IGxhYmVsO1xuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGl0ZW0uaHJlZiA9IGFjdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW0uYWRkRXZlbnRIYW5kbGVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgICAgICBhY3Rpb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vZnJhcHBlanMvY2xpZW50L2Rlc2svaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImNvbnN0IGZyYXBwZSA9IHJlcXVpcmUoJ2ZyYXBwZWpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgU2VhcmNoIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQpIHtcbiAgICAgICAgdGhpcy5pbnB1dCA9IGZyYXBwZS51aS5hZGQoJ2lucHV0JywgJ2Zvcm0tY29udHJvbCBuYXYtc2VhcmNoJywgcGFyZW50KTtcbiAgICAgICAgdGhpcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZT09PTEzKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBmcmFwcGUucm91dGVyLmN1cnJlbnRfcGFnZS5saXN0O1xuICAgICAgICAgICAgICAgIGlmIChsaXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3Quc2VhcmNoX3RleHQgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBsaXN0LnJ1bigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vZnJhcHBlanMvY2xpZW50L2Rlc2svc2VhcmNoLmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJjb25zdCBmcmFwcGUgPSByZXF1aXJlKCdmcmFwcGVqcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzIFJvdXRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudF9wYWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGF0aWNfcm91dGVzID0gW107XG4gICAgICAgIHRoaXMuZHluYW1pY19yb3V0ZXMgPSBbXTtcbiAgICB9XG5cbiAgICBhZGQocm91dGUsIGhhbmRsZXIpIHtcbiAgICAgICAgbGV0IHBhZ2UgPSB7aGFuZGxlcjogaGFuZGxlciwgcm91dGU6IHJvdXRlfTtcblxuICAgICAgICAvLyAnL3RvZG8vOm5hbWUvOnBsYWNlJy5tYXRjaCgvOihbXi9dKykvZyk7XG4gICAgICAgIHBhZ2UucGFyYW1fa2V5cyA9IHJvdXRlLm1hdGNoKC86KFteL10rKS9nKTtcblxuICAgICAgICBpZiAocGFnZS5wYXJhbV9rZXlzKSB7XG4gICAgICAgICAgICAvLyBtYWtlIGV4cHJlc3Npb25cbiAgICAgICAgICAgIC8vICcvdG9kby86bmFtZS86cGxhY2UnLnJlcGxhY2UoL1xcLzooW2EtejEtOV0rKS9nLCBcIlxcLyhbYS16MC05XSspXCIpO1xuICAgICAgICAgICAgcGFnZS5kZXB0aCA9IHJvdXRlLnNwbGl0KCcvJykubGVuZ3RoO1xuICAgICAgICAgICAgcGFnZS5leHByZXNzaW9uID0gcm91dGUucmVwbGFjZSgvXFwvOihbYS16MS05XSspL2csIFwiXFwvKFthLXowLTldKylcIik7XG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNfcm91dGVzLnB1c2gocGFnZSk7XG4gICAgICAgICAgICB0aGlzLnNvcnRfZHluYW1pY19yb3V0ZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGljX3JvdXRlcy5wdXNoKHBhZ2UpO1xuICAgICAgICAgICAgdGhpcy5zb3J0X3N0YXRpY19yb3V0ZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNvcnRfZHluYW1pY19yb3V0ZXMoKSB7XG4gICAgICAgIC8vIHJvdXRlcyB3aXRoIG1vcmUgcGFydHMgZmlyc3RcbiAgICAgICAgdGhpcy5keW5hbWljX3JvdXRlcyA9IHRoaXMuZHluYW1pY19yb3V0ZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgaWYgKGEuZGVwdGggPCBiLmRlcHRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGEuZGVwdGggPiBiLmRlcHRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoYS5wYXJhbV9rZXlzLmxlbmd0aCAhPT0gYi5wYXJhbV9rZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5wYXJhbV9rZXlzLmxlbmd0aCA+IGIucGFyYW1fa2V5cy5sZW5ndGggPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucm91dGUubGVuZ3RoID4gYi5yb3V0ZS5sZW5ndGggPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHNvcnRfc3RhdGljX3JvdXRlcygpIHtcbiAgICAgICAgLy8gbG9uZ2VyIHJvdXRlcyBvbiBmaXJzdFxuICAgICAgICB0aGlzLnN0YXRpY19yb3V0ZXMgPSB0aGlzLnN0YXRpY19yb3V0ZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGEucm91dGUubGVuZ3RoID4gYi5yb3V0ZS5sZW5ndGggPyAxIDogLTE7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxpc3RlbigpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2hhc2hjaGFuZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvdyh3aW5kb3cubG9jYXRpb24uaGFzaCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldF9yb3V0ZSguLi5wYXJ0cykge1xuICAgICAgICBjb25zdCByb3V0ZSA9IHBhcnRzLmpvaW4oJy8nKTtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSByb3V0ZTtcbiAgICB9XG5cbiAgICBhc3luYyBzaG93KHJvdXRlKSB7XG4gICAgICAgIGlmIChyb3V0ZSAmJiByb3V0ZVswXT09PScjJykge1xuICAgICAgICAgICAgcm91dGUgPSByb3V0ZS5zdWJzdHIoMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJvdXRlKSB7XG4gICAgICAgICAgICByb3V0ZSA9IHRoaXMuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcGFnZSA9IHRoaXMubWF0Y2gocm91dGUpO1xuXG4gICAgICAgIGlmIChwYWdlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHBhZ2UuaGFuZGxlcj09PSdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBwYWdlLmhhbmRsZXIocGFnZS5wYXJhbXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBwYWdlLmhhbmRsZXIuc2hvdyhwYWdlLnBhcmFtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtYXRjaChyb3V0ZSkge1xuICAgICAgICAvLyBtYXRjaCBzdGF0aWNcbiAgICAgICAgZm9yKGxldCBwYWdlIG9mIHRoaXMuc3RhdGljX3JvdXRlcykge1xuICAgICAgICAgICAgaWYgKHBhZ2Uucm91dGUgPT09IHJvdXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtoYW5kbGVyOiBwYWdlLmhhbmRsZXJ9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gbWF0Y2ggZHluYW1pY1xuICAgICAgICBmb3IobGV0IHBhZ2Ugb2YgdGhpcy5keW5hbWljX3JvdXRlcykge1xuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSByb3V0ZS5tYXRjaChuZXcgUmVnRXhwKHBhZ2UuZXhwcmVzc2lvbikpO1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA9PSBwYWdlLnBhcmFtX2tleXMubGVuZ3RoICsgMSkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSB7fVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaSA8IHBhZ2UucGFyYW1fa2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXNbcGFnZS5wYXJhbV9rZXlzW2ldLnN1YnN0cigxKV0gPSBtYXRjaGVzW2kgKyAxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtoYW5kbGVyOnBhZ2UuaGFuZGxlciwgcGFyYW1zOiBwYXJhbXN9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL2ZyYXBwZWpzL2NvbW1vbi9yb3V0ZXIuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImNvbnN0IGZyYXBwZSA9IHJlcXVpcmUoJ2ZyYXBwZWpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgUGFnZSB7XG4gICAgY29uc3RydWN0b3IodGl0bGUpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVycyA9IHt9O1xuICAgICAgICB0aGlzLnRpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMubWFrZSgpO1xuICAgIH1cblxuICAgIG1ha2UoKSB7XG4gICAgICAgIHRoaXMud3JhcHBlciA9IGZyYXBwZS51aS5hZGQoJ2RpdicsICdwYWdlIGhpZGUnLCBmcmFwcGUuZGVzay5tYWluKTtcbiAgICAgICAgdGhpcy5ib2R5ID0gZnJhcHBlLnVpLmFkZCgnZGl2JywgJ3BhZ2UtYm9keScsIHRoaXMud3JhcHBlcik7XG4gICAgfVxuXG4gICAgaGlkZSgpIHtcbiAgICAgICAgdGhpcy53cmFwcGVyLmNsYXNzTGlzdC5hZGQoJ2hpZGUnKTtcbiAgICAgICAgdGhpcy50cmlnZ2VyKCdoaWRlJyk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2hvdyhwYXJhbXMpIHtcbiAgICAgICAgaWYgKGZyYXBwZS5yb3V0ZXIuY3VycmVudF9wYWdlKSB7XG4gICAgICAgICAgICBmcmFwcGUucm91dGVyLmN1cnJlbnRfcGFnZS5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53cmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGUnKTtcbiAgICAgICAgdGhpcy5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGUnKTtcblxuICAgICAgICBpZiAodGhpcy5wYWdlX2Vycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VfZXJyb3IuY2xhc3NMaXN0LmFkZCgnaGlkZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJhcHBlLnJvdXRlci5jdXJyZW50X3BhZ2UgPSB0aGlzO1xuICAgICAgICBkb2N1bWVudC50aXRsZSA9IHRoaXMudGl0bGU7XG5cbiAgICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyKCdzaG93JywgcGFyYW1zKTtcbiAgICB9XG5cbiAgICByZW5kZXJfZXJyb3Ioc3RhdHVzX2NvZGUsIG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhZ2VfZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZV9lcnJvciA9IGZyYXBwZS51aS5hZGQoJ2RpdicsICdwYWdlLWVycm9yJywgdGhpcy53cmFwcGVyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJvZHkuY2xhc3NMaXN0LmFkZCgnaGlkZScpO1xuICAgICAgICB0aGlzLnBhZ2VfZXJyb3IuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZScpO1xuICAgICAgICB0aGlzLnBhZ2VfZXJyb3IuaW5uZXJIVE1MID0gYDxoMyBjbGFzcz1cInRleHQtZXh0cmEtbXV0ZWRcIj4ke3N0YXR1c19jb2RlfTwvaDM+PHAgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+JHttZXNzYWdlfTwvcD5gO1xuICAgIH1cblxuICAgIG9uKGV2ZW50LCBmbikge1xuICAgICAgICBpZiAoIXRoaXMuaGFuZGxlcnNbZXZlbnRdKSB0aGlzLmhhbmRsZXJzW2V2ZW50XSA9IFtdO1xuICAgICAgICB0aGlzLmhhbmRsZXJzW2V2ZW50XS5wdXNoKGZuKTtcbiAgICB9XG5cbiAgICBhc3luYyB0cmlnZ2VyKGV2ZW50LCBwYXJhbXMpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlcnNbZXZlbnRdKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnNbZXZlbnRdKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgaGFuZGxlcihwYXJhbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL2ZyYXBwZWpzL2NsaWVudC92aWV3L3BhZ2UuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImNvbnN0IGZyYXBwZSA9IHJlcXVpcmUoJ2ZyYXBwZWpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgTGlzdCB7XG4gICAgY29uc3RydWN0b3Ioe2RvY3R5cGUsIHBhcmVudCwgZmllbGRzfSkge1xuICAgICAgICB0aGlzLmRvY3R5cGUgPSBkb2N0eXBlO1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG5cbiAgICAgICAgdGhpcy5tZXRhID0gZnJhcHBlLmdldF9tZXRhKHRoaXMuZG9jdHlwZSk7XG5cbiAgICAgICAgdGhpcy5zdGFydCA9IDA7XG4gICAgICAgIHRoaXMucGFnZV9sZW5ndGggPSAyMDtcblxuICAgICAgICB0aGlzLmJvZHkgPSBudWxsO1xuICAgICAgICB0aGlzLnJvd3MgPSBbXTtcbiAgICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuKCkge1xuICAgICAgICB0aGlzLm1ha2VfYm9keSgpO1xuICAgICAgICB0aGlzLnNldF9maWx0ZXJzKCk7XG5cbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCB0aGlzLm1ldGEuZ2V0X2xpc3Qoe1xuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgICAgICAgICAgc3RhcnQ6dGhpcy5zdGFydCxcbiAgICAgICAgICAgIGxpbWl0OnRoaXMucGFnZV9sZW5ndGggKyAxXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgTWF0aC5taW4odGhpcy5wYWdlX2xlbmd0aCwgZGF0YS5sZW5ndGgpOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyX3Jvdyh0aGlzLnN0YXJ0ICsgaSwgZGF0YVtpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zdGFydCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5jb25jYXQoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbGVhcl9lbXB0eV9yb3dzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlX21vcmUoZGF0YS5sZW5ndGggPiB0aGlzLnBhZ2VfbGVuZ3RoKTtcbiAgICB9XG5cbiAgICBhc3luYyBhcHBlbmQoKSB7XG4gICAgICAgIHRoaXMuc3RhcnQgKz0gdGhpcy5wYWdlX2xlbmd0aDtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW4oKTtcbiAgICB9XG5cbiAgICBzZXRfZmlsdGVycygpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0ge307XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaF9pbnB1dC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzLmtleXdvcmRzID0gWydsaWtlJywgJyUnICsgdGhpcy5zZWFyY2hfaW5wdXQudmFsdWUgKyAnJSddO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWFrZV9ib2R5KCkge1xuICAgICAgICBpZiAoIXRoaXMuYm9keSkge1xuICAgICAgICAgICAgdGhpcy5tYWtlX3NlYXJjaCgpO1xuICAgICAgICAgICAgdGhpcy5ib2R5ID0gZnJhcHBlLnVpLmFkZCgnZGl2JywgJ2xpc3QtYm9keScsIHRoaXMucGFyZW50KTtcbiAgICAgICAgICAgIHRoaXMubWFrZV9tb3JlX2J0bigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWFrZV9zZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoX2lucHV0X2dyb3VwID0gZnJhcHBlLnVpLmFkZCgnZGl2JywgJ2lucHV0LWdyb3VwIGxpc3Qtc2VhcmNoJywgdGhpcy5wYXJlbnQpO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoX2lucHV0ID0gZnJhcHBlLnVpLmFkZCgnaW5wdXQnLCAnZm9ybS1jb250cm9sJywgdGhpcy5zZWFyY2hfaW5wdXRfZ3JvdXApO1xuICAgICAgICB0aGlzLnNlYXJjaF9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGU9PT0xMykge1xuICAgICAgICAgICAgICAgIHRoaXMucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoX2lucHV0X2dyb3VwX2FwcGVuZCA9IGZyYXBwZS51aS5hZGQoJ2RpdicsICdpbnB1dC1ncm91cC1hcHBlbmQnLCB0aGlzLnNlYXJjaF9pbnB1dF9ncm91cCk7XG4gICAgICAgIHRoaXMuc2VhcmNoX2J1dHRvbiA9IGZyYXBwZS51aS5hZGQoJ2J1dHRvbicsICdidG4gYnRuLXNlY29uZGFyeScsIHRoaXMuc2VhcmNoX2lucHV0X2dyb3VwX2FwcGVuZCk7XG4gICAgICAgIHRoaXMuc2VhcmNoX2J1dHRvbi50ZXh0Q29udGVudCA9ICdTZWFyY2gnO1xuICAgICAgICB0aGlzLnNlYXJjaF9idXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMucnVuKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1ha2VfbW9yZV9idG4oKSB7XG4gICAgICAgIHRoaXMubW9yZV9idG4gPSBmcmFwcGUudWkuYWRkKCdidXR0b24nLCAnYnRuIGJ0bi1zZWNvbmRhcnkgaGlkZScsIHRoaXMucGFyZW50KTtcbiAgICAgICAgdGhpcy5tb3JlX2J0bi50ZXh0Q29udGVudCA9ICdNb3JlJztcbiAgICAgICAgdGhpcy5tb3JlX2J0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcmVuZGVyX3JvdyhpLCBkYXRhKSB7XG4gICAgICAgIGxldCByb3cgPSB0aGlzLmdldF9yb3coaSk7XG4gICAgICAgIHJvdy5pbm5lckhUTUwgPSB0aGlzLm1ldGEuZ2V0X3Jvd19odG1sKGRhdGEpO1xuICAgICAgICByb3cuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuXG4gICAgZ2V0X3JvdyhpKSB7XG4gICAgICAgIGlmICghdGhpcy5yb3dzW2ldKSB7XG4gICAgICAgICAgICB0aGlzLnJvd3NbaV0gPSBmcmFwcGUudWkuYWRkKCdkaXYnLCAnbGlzdC1yb3cnLCB0aGlzLmJvZHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJvd3NbaV07XG4gICAgfVxuXG4gICAgY2xlYXJfZW1wdHlfcm93cygpIHtcbiAgICAgICAgaWYgKHRoaXMucm93cy5sZW5ndGggPiB0aGlzLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpPXRoaXMuZGF0YS5sZW5ndGg7IGkgPCB0aGlzLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgcm93ID0gdGhpcy5nZXRfcm93KGkpO1xuICAgICAgICAgICAgICAgIHJvdy5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgICAgICByb3cuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZV9tb3JlKHNob3cpIHtcbiAgICAgICAgaWYgKHNob3cpIHtcbiAgICAgICAgICAgIHRoaXMubW9yZV9idG4uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tb3JlX2J0bi5jbGFzc0xpc3QuYWRkKCdoaWRlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vZnJhcHBlanMvY2xpZW50L3ZpZXcvbGlzdC5qc1xuLy8gbW9kdWxlIGlkID0gMjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiY29uc3QgZnJhcHBlID0gcmVxdWlyZSgnZnJhcHBlanMnKTtcbmNvbnN0IGNvbnRyb2xzID0gcmVxdWlyZSgnLi9jb250cm9scycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzIEZvcm0ge1xuICAgIGNvbnN0cnVjdG9yKHtkb2N0eXBlLCBwYXJlbnQsIHN1Ym1pdF9sYWJlbD0nU3VibWl0J30pIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMuZG9jdHlwZSA9IGRvY3R5cGU7XG4gICAgICAgIHRoaXMuc3VibWl0X2xhYmVsID0gc3VibWl0X2xhYmVsO1xuXG4gICAgICAgIHRoaXMuY29udHJvbHMgPSB7fTtcbiAgICAgICAgdGhpcy5jb250cm9sc19saXN0ID0gW107XG5cbiAgICAgICAgdGhpcy5tZXRhID0gZnJhcHBlLmdldF9tZXRhKHRoaXMuZG9jdHlwZSk7XG4gICAgICAgIHRoaXMubWFrZSgpO1xuICAgIH1cblxuICAgIG1ha2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmJvZHkgfHwgIXRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJvZHkgPSBmcmFwcGUudWkuYWRkKCdkaXYnLCAnZm9ybS1ib2R5JywgdGhpcy5wYXJlbnQpO1xuICAgICAgICB0aGlzLm1ha2VfYWN0aW9ucygpO1xuXG4gICAgICAgIHRoaXMuZm9ybSA9IGZyYXBwZS51aS5hZGQoJ2Zvcm0nLCBudWxsLCB0aGlzLmJvZHkpO1xuICAgICAgICBmb3IobGV0IGRmIG9mIHRoaXMubWV0YS5maWVsZHMpIHtcbiAgICAgICAgICAgIGlmIChjb250cm9scy5nZXRfY29udHJvbF9jbGFzcyhkZi5maWVsZHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRyb2wgPSBjb250cm9scy5tYWtlX2NvbnRyb2woZGYsIHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sc19saXN0LnB1c2goY29udHJvbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sc1tkZi5maWVsZG5hbWVdID0gY29udHJvbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1ha2Vfc3VibWl0KCk7XG4gICAgfVxuXG4gICAgbWFrZV9hY3Rpb25zKCkge1xuICAgICAgICB0aGlzLnRvb2xiYXIgPSBmcmFwcGUudWkuYWRkKCdkaXYnLCAnZm9ybS10b29sYmFyJywgdGhpcy5ib2R5KTtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gZnJhcHBlLnVpLm1ha2VfZHJvcGRvd24oJ0FjdGlvbnMnLCB0aGlzLnRvb2xiYXIpO1xuXG4gICAgICAgIC8vIGRlbGV0ZVxuICAgICAgICB0aGlzLmFjdGlvbnMuYWRkX2l0ZW0oJ0RlbGV0ZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG9jLmRlbGV0ZSgpO1xuICAgICAgICAgICAgdGhpcy5zaG93X2FsZXJ0KCdEZWxldGVkJywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hY3Rpb25zLmZsb2F0X3JpZ2h0KCk7XG4gICAgfVxuXG4gICAgbWFrZV9zdWJtaXQoKSB7XG4gICAgICAgIHRoaXMuc3VibWl0X2J0biA9IGZyYXBwZS51aS5hZGQoJ2J1dHRvbicsICdidG4gYnRuLW91dGxpbmUtcHJpbWFyeScsXG4gICAgICAgICAgICB0aGlzLmJvZHkpO1xuICAgICAgICB0aGlzLnN1Ym1pdF9idG4uc2V0QXR0cmlidXRlKCd0eXBlJywgJ3N1Ym1pdCcpO1xuICAgICAgICB0aGlzLnN1Ym1pdF9idG4udGV4dENvbnRlbnQgPSB0aGlzLnN1Ym1pdF9sYWJlbDtcbiAgICAgICAgdGhpcy5zdWJtaXRfYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdCgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBzaG93X2FsZXJ0KG1lc3NhZ2UsIHR5cGUpIHtcbiAgICAgICAgdGhpcy5jbGVhcl9hbGVydCgpO1xuICAgICAgICB0aGlzLmFsZXJ0ID0gZnJhcHBlLnVpLmFkZCgnZGl2JywgYGFsZXJ0IGFsZXJ0LSR7dHlwZX1gLCB0aGlzLmJvZHkpO1xuICAgICAgICB0aGlzLmFsZXJ0LnRleHRDb250ZW50ID0gbWVzc2FnZTtcbiAgICB9XG5cbiAgICBjbGVhcl9hbGVydCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYWxlcnQpIHtcbiAgICAgICAgICAgIGZyYXBwZS51aS5yZW1vdmUodGhpcy5hbGVydCk7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHVzZShkb2MsIGlzX25ldyA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmRvYykge1xuICAgICAgICAgICAgLy8gY2xlYXIgaGFuZGxlcnMgb2Ygb3V0Z29pbmcgZG9jXG4gICAgICAgICAgICB0aGlzLmRvYy5jbGVhcl9oYW5kbGVycygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xlYXJfYWxlcnQoKTtcbiAgICAgICAgdGhpcy5kb2MgPSBkb2M7XG4gICAgICAgIHRoaXMuaXNfbmV3ID0gaXNfbmV3O1xuICAgICAgICBmb3IgKGxldCBjb250cm9sIG9mIHRoaXMuY29udHJvbHNfbGlzdCkge1xuICAgICAgICAgICAgY29udHJvbC5iaW5kKHRoaXMuZG9jKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHN1Ym1pdCgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzX25ldyB8fCB0aGlzLmRvYy5fX25vdF9pbnNlcnRlZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZG9jLmluc2VydCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRvYy51cGRhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaCgpO1xuICAgICAgICAgICAgdGhpcy5zaG93X2FsZXJ0KCdTYXZlZCcsICdzdWNjZXNzJyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd19hbGVydCgnRmFpbGVkJywgJ2RhbmdlcicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgZm9yKGxldCBjb250cm9sIG9mIHRoaXMuY29udHJvbHNfbGlzdCkge1xuICAgICAgICAgICAgY29udHJvbC5yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9mcmFwcGVqcy9jbGllbnQvdmlldy9mb3JtLmpzXG4vLyBtb2R1bGUgaWQgPSAyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJjb25zdCBjb250cm9sX2NsYXNzZXMgPSB7XG4gICAgRGF0YTogcmVxdWlyZSgnLi9kYXRhJyksXG4gICAgVGV4dDogcmVxdWlyZSgnLi90ZXh0JyksXG4gICAgU2VsZWN0OiByZXF1aXJlKCcuL3NlbGVjdCcpXG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZ2V0X2NvbnRyb2xfY2xhc3MoZmllbGR0eXBlKSB7XG4gICAgICAgIHJldHVybiBjb250cm9sX2NsYXNzZXNbZmllbGR0eXBlXTtcbiAgICB9LFxuICAgIG1ha2VfY29udHJvbChmaWVsZCwgcGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xfY2xhc3MgPSB0aGlzLmdldF9jb250cm9sX2NsYXNzKGZpZWxkLmZpZWxkdHlwZSk7XG4gICAgICAgIGxldCBjb250cm9sID0gbmV3IGNvbnRyb2xfY2xhc3MoZmllbGQsIHBhcmVudCk7XG4gICAgICAgIGNvbnRyb2wubWFrZSgpO1xuICAgICAgICByZXR1cm4gY29udHJvbDtcbiAgICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vZnJhcHBlanMvY2xpZW50L3ZpZXcvY29udHJvbHMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDI3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImNvbnN0IEJhc2VDb250cm9sID0gcmVxdWlyZSgnLi9iYXNlJyk7XG5cbmNsYXNzIERhdGFDb250cm9sIGV4dGVuZHMgQmFzZUNvbnRyb2wge1xuICAgIG1ha2UoKSB7XG4gICAgICAgIHN1cGVyLm1ha2UoKTtcbiAgICAgICAgdGhpcy5pbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dCcpO1xuICAgIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRGF0YUNvbnRyb2w7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vZnJhcHBlanMvY2xpZW50L3ZpZXcvY29udHJvbHMvZGF0YS5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiY29uc3QgQmFzZUNvbnRyb2wgPSByZXF1aXJlKCcuL2Jhc2UnKTtcblxuY2xhc3MgVGV4dENvbnRyb2wgZXh0ZW5kcyBCYXNlQ29udHJvbCB7XG4gICAgbWFrZV9pbnB1dCgpIHtcbiAgICAgICAgdGhpcy5pbnB1dCA9IGZyYXBwZS51aS5hZGQoJ3RleHRhcmVhJywgJ2Zvcm0tY29udHJvbCcsIHRoaXMuZm9ybV9ncm91cCk7XG4gICAgfVxuICAgIG1ha2UoKSB7XG4gICAgICAgIHN1cGVyLm1ha2UoKTtcbiAgICAgICAgdGhpcy5pbnB1dC5zZXRBdHRyaWJ1dGUoJ3Jvd3MnLCAnOCcpO1xuICAgIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVGV4dENvbnRyb2w7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vZnJhcHBlanMvY2xpZW50L3ZpZXcvY29udHJvbHMvdGV4dC5qc1xuLy8gbW9kdWxlIGlkID0gMjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiY29uc3QgQmFzZUNvbnRyb2wgPSByZXF1aXJlKCcuL2Jhc2UnKTtcblxuY2xhc3MgU2VsZWN0Q29udHJvbCBleHRlbmRzIEJhc2VDb250cm9sIHtcbiAgICBtYWtlX2lucHV0KCkge1xuICAgICAgICB0aGlzLmlucHV0ID0gZnJhcHBlLnVpLmFkZCgnc2VsZWN0JywgJ2Zvcm0tY29udHJvbCcsIHRoaXMuZm9ybV9ncm91cCk7XG5cbiAgICAgICAgbGV0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucz09PSdzdHJpbmcnKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucy5zcGxpdCgnXFxuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgICBsZXQgb3B0aW9uID0gZnJhcHBlLnVpLmFkZCgnb3B0aW9uJywgbnVsbCwgdGhpcy5pbnB1dCk7XG4gICAgICAgICAgICBvcHRpb24udGV4dENvbnRlbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIG9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG1ha2UoKSB7XG4gICAgICAgIHN1cGVyLm1ha2UoKTtcbiAgICAgICAgdGhpcy5pbnB1dC5zZXRBdHRyaWJ1dGUoJ3JvdycsICczJyk7XG4gICAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZWxlY3RDb250cm9sO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL2ZyYXBwZWpzL2NsaWVudC92aWV3L2NvbnRyb2xzL3NlbGVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiY29uc3QgZnJhcHBlID0gcmVxdWlyZSgnZnJhcHBlanMnKTtcblxuY2xhc3MgdG9kb19tZXRhIGV4dGVuZHMgZnJhcHBlLm1ldGEuTWV0YSB7XG4gICAgc2V0dXBfbWV0YSgpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCByZXF1aXJlKCcuL3RvZG8uanNvbicpKTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ1RvRG8nO1xuICAgICAgICB0aGlzLmxpc3Rfb3B0aW9ucy5maWVsZHMgPSBbJ25hbWUnLCAnc3ViamVjdCcsICdzdGF0dXMnXTtcbiAgICB9XG5cbiAgICBnZXRfcm93X2h0bWwoZGF0YSkge1xuICAgICAgICBjb25zdCBzaWduID0gZGF0YS5zdGF0dXMgPT09ICdPcGVuJyA/ICcnIDogJ+KclCc7XG4gICAgICAgIHJldHVybiBgPHA+PGEgaHJlZj1cIiNlZGl0L3RvZG8vJHtkYXRhLm5hbWV9XCI+JHtzaWdufSAke2RhdGEuc3ViamVjdH08L2E+PC9wPmA7XG4gICAgfVxuXG59XG5cbmNsYXNzIHRvZG8gZXh0ZW5kcyBmcmFwcGUuZG9jdW1lbnQuRG9jdW1lbnQge1xuICAgIHNldHVwKCkge1xuICAgICAgICB0aGlzLmFkZF9oYW5kbGVyKCd2YWxpZGF0ZScpO1xuICAgIH1cbiAgICB2YWxpZGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0YXR1cykge1xuICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSAnT3Blbic7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHRvZG86IHRvZG8sXG4gICAgdG9kb19tZXRhOiB0b2RvX21ldGFcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9mcmFwcGVqcy9tb2RlbHMvZG9jdHlwZS90b2RvL3RvZG8uanNcbi8vIG1vZHVsZSBpZCA9IDMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0ge1wiYXV0b25hbWVcIjpcImhhc2hcIixcIm5hbWVcIjpcIlRvRG9cIixcImRvY3R5cGVcIjpcIkRvY1R5cGVcIixcImlzc2luZ2xlXCI6MCxcImtleXdvcmRfZmllbGRzXCI6W1wic3ViamVjdFwiLFwiZGVzY3JpcHRpb25cIl0sXCJmaWVsZHNcIjpbe1wiZmllbGRuYW1lXCI6XCJzdWJqZWN0XCIsXCJsYWJlbFwiOlwiU3ViamVjdFwiLFwiZmllbGR0eXBlXCI6XCJEYXRhXCIsXCJyZXFkXCI6MX0se1wiZmllbGRuYW1lXCI6XCJkZXNjcmlwdGlvblwiLFwibGFiZWxcIjpcIkRlc2NyaXB0aW9uXCIsXCJmaWVsZHR5cGVcIjpcIlRleHRcIn0se1wiZmllbGRuYW1lXCI6XCJzdGF0dXNcIixcImxhYmVsXCI6XCJTdGF0dXNcIixcImZpZWxkdHlwZVwiOlwiU2VsZWN0XCIsXCJvcHRpb25zXCI6W1wiT3BlblwiLFwiQ2xvc2VkXCJdLFwiZGVmYXVsdFwiOlwiT3BlblwiLFwicmVxZFwiOjF9XX1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9mcmFwcGVqcy9tb2RlbHMvZG9jdHlwZS90b2RvL3RvZG8uanNvblxuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgbGlzdCA9IFtdO1xuXG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuXHRcdFx0dmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG5cdFx0XHRpZihpdGVtWzJdKSB7XG5cdFx0XHRcdHJldHVybiBcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGNvbnRlbnQgKyBcIn1cIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBjb250ZW50O1xuXHRcdFx0fVxuXHRcdH0pLmpvaW4oXCJcIik7XG5cdH07XG5cblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3Rcblx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuXHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XG5cdFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcblx0XHR9XG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuXHRcdFx0XHR9IGVsc2UgaWYobWVkaWFRdWVyeSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRyZXR1cm4gbGlzdDtcbn07XG5cbmZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKSB7XG5cdHZhciBjb250ZW50ID0gaXRlbVsxXSB8fCAnJztcblx0dmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXHRpZiAoIWNzc01hcHBpbmcpIHtcblx0XHRyZXR1cm4gY29udGVudDtcblx0fVxuXG5cdGlmICh1c2VTb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcblx0XHR2YXIgc291cmNlTWFwcGluZyA9IHRvQ29tbWVudChjc3NNYXBwaW5nKTtcblx0XHR2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuXHRcdFx0cmV0dXJuICcvKiMgc291cmNlVVJMPScgKyBjc3NNYXBwaW5nLnNvdXJjZVJvb3QgKyBzb3VyY2UgKyAnICovJ1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbignXFxuJyk7XG5cdH1cblxuXHRyZXR1cm4gW2NvbnRlbnRdLmpvaW4oJ1xcbicpO1xufVxuXG4vLyBBZGFwdGVkIGZyb20gY29udmVydC1zb3VyY2UtbWFwIChNSVQpXG5mdW5jdGlvbiB0b0NvbW1lbnQoc291cmNlTWFwKSB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuXHR2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKTtcblx0dmFyIGRhdGEgPSAnc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsJyArIGJhc2U2NDtcblxuXHRyZXR1cm4gJy8qIyAnICsgZGF0YSArICcgKi8nO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcbi8vIG1vZHVsZSBpZCA9IDMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=
|