Contact Form by WPForms – Drag & Drop Form Builder for WordPress - Version 1.5.3

Version Description

  • Added: AJAX form submissions.
  • Added: Full support and compatiblity with Google AMP.
  • Added: Google reCAPTCHA v3.
  • Changed: WPForms uninstall script for better cleanup process.
  • Changed: Email field mailcheck feature to offer additional controls. New filters: wpforms_mailcheck_enabled, wpforms_mailcheck_domains, and wpforms_mailcheck_toplevel_domains.
  • Fixed: Special characters aren't encoded when Smart Tags are processed in query string.
  • Fixed: Fields with Image choices are not working with some Android and older desktop browsers.
  • Fixed: Form Builder: Several alert modals are displayed in batch if multiple providers have configuration issues.
  • Fixed: WP_Post object is returned from wpforms()->form->get() if form data is requested with a non-WPForms post ID.
Download this release

Release Info

Developer jaredatch
Plugin Icon 128x128 Contact Form by WPForms – Drag & Drop Form Builder for WordPress
Version 1.5.3
Comparing to
See all releases

Code changes from version 1.5.2.3 to 1.5.3

assets/css/admin.css CHANGED
@@ -3486,7 +3486,7 @@ body .choices input[type=text].choices__input {
3486
  margin-top: 12px;
3487
  }
3488
 
3489
- .wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-text .wpforms-setting-label {
3490
  padding-top: 8px;
3491
  }
3492
 
@@ -3574,6 +3574,7 @@ body .choices input[type=text].choices__input {
3574
  }
3575
 
3576
  .wpforms-admin-settings .wpforms-setting-row input[type=text],
 
3577
  .wpforms-admin-settings .wpforms-setting-row input[type=password] {
3578
  background-color: #fff;
3579
  border: 1px solid #ddd;
@@ -3590,16 +3591,22 @@ body .choices input[type=text].choices__input {
3590
 
3591
  @media (max-width: 959px) {
3592
  .wpforms-admin-settings .wpforms-setting-row input[type=text],
 
3593
  .wpforms-admin-settings .wpforms-setting-row input[type=password] {
3594
  width: 300px;
3595
  }
3596
  }
3597
 
3598
  .wpforms-admin-settings .wpforms-setting-row input[type=text]:focus,
 
3599
  .wpforms-admin-settings .wpforms-setting-row input[type=password]:focus {
3600
  border-color: #bbb;
3601
  }
3602
 
 
 
 
 
3603
  .wpforms-admin-settings .wpforms-setting-row button {
3604
  margin-right: 10px;
3605
  }
@@ -4225,4 +4232,4 @@ body .choices input[type=text].choices__input {
4225
  font-size: 14px;
4226
  }
4227
 
4228
- /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzL2Nzcy9hZG1pbi5jc3MiLCJzb3VyY2VzIjpbImFzc2V0cy9zY3NzL2FkbWluLnNjc3MiLCJhc3NldHMvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCJhc3NldHMvc2Nzcy92ZW5kb3IvcGFydGlhbHMvX2luY2x1ZGUtbWVkaWEuc2NzcyIsImFzc2V0cy9zY3NzL3ZlbmRvci9wYXJ0aWFscy9fY2hvaWNlcy5zY3NzIiwiYXNzZXRzL3Njc3MvYWRtaW4vX2J1dHRvbnMuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19jb25maXJtLnNjc3MiLCJhc3NldHMvc2Nzcy9hZG1pbi9fYWxlcnRzLnNjc3MiLCJhc3NldHMvc2Nzcy9hZG1pbi9fZmxhZ3Muc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19oZWFkZXIuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL190aXRsZS10YWJzLnNjc3MiLCJhc3NldHMvc2Nzcy9hZG1pbi9fZ2VuZXJhbC5zY3NzIiwiYXNzZXRzL3Njc3MvYWRtaW4vX3BhZ2UtZm9ybXMtb3ZlcnZpZXcuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19wYWdlLWVudHJpZXMtc2luZ2xlLnNjc3MiLCJhc3NldHMvc2Nzcy9hZG1pbi9fcGFnZS1lbnRyaWVzLWxpc3Quc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19wYWdlLXdlbGNvbWUuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19wYWdlLWFkZG9ucy5zY3NzIiwiYXNzZXRzL3Njc3MvYWRtaW4vX3BhZ2UtYWJvdXQuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19wYWdlLXNldHRpbmdzLXRvb2xzLnNjc3MiLCJhc3NldHMvc2Nzcy9hZG1pbi9fcGFnZS1zZXR0aW5ncy1pbnRlZ3JhdGlvbnMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXUEZvcm1zIGFkbWluIHN0eWxlcy5cbi8vIFRoZXNlIHN0eWxlcyBhcmUgbG9hZGVkIG9uIGFsbCBXUEZvcm1zIHJlbGF0ZWQgYWRtaW4gcGFnZXMuXG5cbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd2ZW5kb3IvcGFydGlhbHMvaW5jbHVkZS1tZWRpYSc7XG5AaW1wb3J0ICd2ZW5kb3IvcGFydGlhbHMvY2hvaWNlcyc7XG5cbiRicmVha3BvaW50czogKFxuXHQneHMtcGhvbmUnOiAzMjBweCxcblx0J3Bob25lJzogNjAwcHgsXG5cdCdpcGFkJzogNzY4cHgsXG5cdCd0YWJsZXQnOiA3ODJweCxcblx0J2Rlc2t0b3AnOiA5NjBweCxcbik7XG5cbkBpbXBvcnQgJ2FkbWluL2J1dHRvbnMnO1xuQGltcG9ydCAnYWRtaW4vY29uZmlybSc7XG5AaW1wb3J0ICdhZG1pbi9hbGVydHMnO1xuQGltcG9ydCAnYWRtaW4vZmxhZ3MnO1xuQGltcG9ydCAnYWRtaW4vaGVhZGVyJztcbkBpbXBvcnQgJ2FkbWluL3RpdGxlLXRhYnMnO1xuQGltcG9ydCAnYWRtaW4vZ2VuZXJhbCc7XG5AaW1wb3J0ICdhZG1pbi9wYWdlLWZvcm1zLW92ZXJ2aWV3JztcbkBpbXBvcnQgJ2FkbWluL3BhZ2UtZW50cmllcy1zaW5nbGUnO1xuQGltcG9ydCAnYWRtaW4vcGFnZS1lbnRyaWVzLWxpc3QnO1xuQGltcG9ydCAnYWRtaW4vcGFnZS13ZWxjb21lJztcbkBpbXBvcnQgJ2FkbWluL3BhZ2UtYWRkb25zJztcbkBpbXBvcnQgJ2FkbWluL3BhZ2UtYWJvdXQnO1xuQGltcG9ydCAnYWRtaW4vcGFnZS1zZXR0aW5ncy10b29scyc7XG5AaW1wb3J0ICdhZG1pbi9wYWdlLXNldHRpbmdzLWludGVncmF0aW9ucyc7XG4iLCIkb3JhbmdlOiAjZTI3NzMwO1xuJGRhcmtvcmFuZ2U6ICNiODVhMWI7XG4kZ3JlZW46ICMyYTliMzk7XG4kYmx1ZTogIzBlNmNhZDtcbiRsaWdodEJsdWU6ICNlYmYzZmI7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vICAgICBfICAgICAgICAgICAgXyAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gX1xuLy8gICAgKF8pICAgICAgICAgIHwgfCAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IChfKVxuLy8gICAgIF8gXyBfXyAgIF9fX3wgfF8gICBfICBfX3wgfCBfX18gICBfIF9fIF9fXyAgIF9fXyAgX198IHxfICBfXyBfXG4vLyAgICB8IHwgJ18gXFwgLyBfX3wgfCB8IHwgfC8gX2AgfC8gXyBcXCB8ICdfIGAgXyBcXCAvIF8gXFwvIF9gIHwgfC8gX2AgfFxuLy8gICAgfCB8IHwgfCB8IChfX3wgfCB8X3wgfCAoX3wgfCAgX18vIHwgfCB8IHwgfCB8ICBfXy8gKF98IHwgfCAoX3wgfFxuLy8gICAgfF98X3wgfF98XFxfX198X3xcXF9fLF98XFxfXyxffFxcX19ffCB8X3wgfF98IHxffFxcX19ffFxcX18sX3xffFxcX18sX3xcbi8vXG4vLyAgICAgIFNpbXBsZSwgZWxlZ2FudCBhbmQgbWFpbnRhaW5hYmxlIG1lZGlhIHF1ZXJpZXMgaW4gU2Fzc1xuLy8gICAgICAgICAgICAgICAgICAgICAgICB2MS40Ljlcbi8vXG4vLyAgICAgICAgICAgICAgICBodHRwOi8vaW5jbHVkZS1tZWRpYS5jb21cbi8vXG4vLyAgICAgICAgIEF1dGhvcnM6IEVkdWFyZG8gQm91Y2FzIChAZWR1YXJkb2JvdWNhcylcbi8vICAgICAgICAgICAgICAgICAgSHVnbyBHaXJhdWRlbCAoQGh1Z29naXJhdWRlbClcbi8vXG4vLyAgICAgIFRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlXG5cblxuLy8vL1xuLy8vIGluY2x1ZGUtbWVkaWEgbGlicmFyeSBwdWJsaWMgY29uZmlndXJhdGlvblxuLy8vIEBhdXRob3IgRWR1YXJkbyBCb3VjYXNcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vL1xuXG5cbi8vL1xuLy8vIENyZWF0ZXMgYSBsaXN0IG9mIGdsb2JhbCBicmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzaW5nbGUgYnJlYWtwb2ludCB3aXRoIHRoZSBsYWJlbCBgcGhvbmVgXG4vLy8gICRicmVha3BvaW50czogKCdwaG9uZSc6IDMyMHB4KTtcbi8vL1xuJGJyZWFrcG9pbnRzOiAoXG4gICdwaG9uZSc6IDMyMHB4LFxuICAndGFibGV0JzogNzY4cHgsXG4gICdkZXNrdG9wJzogMTAyNHB4XG4pICFkZWZhdWx0O1xuXG5cbi8vL1xuLy8vIENyZWF0ZXMgYSBsaXN0IG9mIHN0YXRpYyBleHByZXNzaW9ucyBvciBtZWRpYSB0eXBlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzaW5nbGUgbWVkaWEgdHlwZSAoc2NyZWVuKVxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJzogJ3NjcmVlbicpO1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzdGF0aWMgZXhwcmVzc2lvbiB3aXRoIGxvZ2ljYWwgZGlzanVuY3Rpb24gKE9SIG9wZXJhdG9yKVxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6IChcbi8vLyAgICAncmV0aW5hMngnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSdcbi8vLyAgKTtcbi8vL1xuJG1lZGlhLWV4cHJlc3Npb25zOiAoXG4gICdzY3JlZW4nOiAnc2NyZWVuJyxcbiAgJ3ByaW50JzogJ3ByaW50JyxcbiAgJ2hhbmRoZWxkJzogJ2hhbmRoZWxkJyxcbiAgJ2xhbmRzY2FwZSc6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAncG9ydHJhaXQnOiAnKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAncmV0aW5hMngnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCknLFxuICAncmV0aW5hM3gnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMyksIChtaW4tcmVzb2x1dGlvbjogMzUwZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAzZHBweCknXG4pICFkZWZhdWx0O1xuXG5cbi8vL1xuLy8vIERlZmluZXMgYSBudW1iZXIgdG8gYmUgYWRkZWQgb3Igc3VidHJhY3RlZCBmcm9tIGVhY2ggdW5pdCB3aGVuIGRlY2xhcmluZyBicmVha3BvaW50cyB3aXRoIGV4Y2x1c2l2ZSBpbnRlcnZhbHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcGl4ZWxzIGlzIGRlZmluZWQgYXMgYDFgIGJ5IGRlZmF1bHRcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4xMjhweCcpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMTI5cHgpIHt9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIGVtcyBpcyBkZWZpbmVkIGFzIGAwLjAxYCBieSBkZWZhdWx0XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+MjBlbScpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMjAuMDFlbSkge31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcmVtcyBpcyBkZWZpbmVkIGFzIGAwLjFgIGJ5IGRlZmF1bHQsIHRvIGJlIHVzZWQgd2l0aCBgZm9udC1zaXplOiA2Mi41JTtgXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+Mi4wcmVtJykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAyLjFyZW0pIHt9XG4vLy9cbiR1bml0LWludGVydmFsczogKFxuICAncHgnOiAxLFxuICAnZW0nOiAwLjAxLFxuICAncmVtJzogMC4xLFxuICAnJzogMFxuKSAhZGVmYXVsdDtcblxuLy8vXG4vLy8gRGVmaW5lcyB3aGV0aGVyIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgYXZhaWxhYmxlLCB1c2VmdWwgZm9yIGNyZWF0aW5nIHNlcGFyYXRlIHN0eWxlc2hlZXRzXG4vLy8gZm9yIGJyb3dzZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBtZWRpYSBxdWVyaWVzLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIERpc2FibGVzIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXNcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgLmZvbyB7XG4vLy8gICAgY29sb3I6IHRvbWF0bztcbi8vLyAgfVxuLy8vXG4kaW0tbWVkaWEtc3VwcG9ydDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vXG4vLy8gU2VsZWN0cyB3aGljaCBicmVha3BvaW50IHRvIGVtdWxhdGUgd2hlbiBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzIGlzIGRpc2FibGVkLiBNZWRpYSBxdWVyaWVzIHRoYXQgc3RhcnQgYXQgb3Jcbi8vLyBpbnRlcmNlcHQgdGhlIGJyZWFrcG9pbnQgd2lsbCBiZSBkaXNwbGF5ZWQsIGFueSBvdGhlcnMgd2lsbCBiZSBpZ25vcmVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgLmZvbyB7XG4vLy8gICAgY29sb3I6IHRvbWF0bztcbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGRvZXMgbm90IGludGVyY2VwdCB0aGUgZGVza3RvcCBicmVha3BvaW50XG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICd0YWJsZXQnO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj1kZXNrdG9wJykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAvKiBObyBvdXRwdXQgKi9cbi8vL1xuJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJyAhZGVmYXVsdDtcblxuLy8vXG4vLy8gU2VsZWN0cyB3aGljaCBtZWRpYSBleHByZXNzaW9ucyBhcmUgYWxsb3dlZCBpbiBhbiBleHByZXNzaW9uIGZvciBpdCB0byBiZSB1c2VkIHdoZW4gbWVkaWEgcXVlcmllc1xuLy8vIGFyZSBub3Qgc3VwcG9ydGVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnQgYW5kIGNvbnRhaW5zIG9ubHkgYWNjZXB0ZWQgbWVkaWEgZXhwcmVzc2lvbnNcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdzY3JlZW4nKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gICAuZm9vIHtcbi8vLyAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgTk9UIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBidXQgY29udGFpbnMgYSBtZWRpYSBleHByZXNzaW9uIHRoYXQgaXMgbm90IGFjY2VwdGVkXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcbi8vLyAgJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbicpO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnLCAncmV0aW5hMngnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xuLy8vXG4kaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJywgJ3BvcnRyYWl0JywgJ2xhbmRzY2FwZScpICFkZWZhdWx0O1xuXG4vLy8vXG4vLy8gQ3Jvc3MtZW5naW5lIGxvZ2dpbmcgZW5naW5lXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gTG9nIGEgbWVzc2FnZSBlaXRoZXIgd2l0aCBgQGVycm9yYCBpZiBzdXBwb3J0ZWRcbi8vLyBlbHNlIHdpdGggYEB3YXJuYCwgdXNpbmcgYGZlYXR1cmUtZXhpc3RzKCdhdC1lcnJvcicpYFxuLy8vIHRvIGRldGVjdCBzdXBwb3J0LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZXNzYWdlIC0gTWVzc2FnZSB0byBsb2dcbi8vL1xuQGZ1bmN0aW9uIGltLWxvZygkbWVzc2FnZSkge1xuICBAaWYgZmVhdHVyZS1leGlzdHMoJ2F0LWVycm9yJykge1xuXHRAZXJyb3IgJG1lc3NhZ2U7XG4gIH0gQGVsc2Uge1xuXHRAd2FybiAkbWVzc2FnZTtcblx0JF86IG5vb3AoKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1lc3NhZ2U7XG59XG5cblxuLy8vXG4vLy8gV3JhcHBlciBtaXhpbiBmb3IgdGhlIGxvZyBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIGEgbW9yZSBmcmllbmRseVxuLy8vIEFQSSB0aGFuIGBAaWYgaW0tbG9nKCcuLicpIHt9YCBvciBgJF86IGltLWxvZygnLi4nKWAuIEJhc2ljYWxseSwgdXNlIHRoZSBmdW5jdGlvblxuLy8vIHdpdGhpbiBmdW5jdGlvbnMgYmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluIGEgZnVuY3Rpb25cbi8vLyBhbmQgdXNlIHRoZSBtaXhpbiBldmVyeXdoZXJlIGVsc2UgYmVjYXVzZSBpdCdzIG11Y2ggbW9yZSBlbGVnYW50LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZXNzYWdlIC0gTWVzc2FnZSB0byBsb2dcbi8vL1xuQG1peGluIGxvZygkbWVzc2FnZSkge1xuICBAaWYgaW0tbG9nKCRtZXNzYWdlKSB7fVxufVxuXG5cbi8vL1xuLy8vIEZ1bmN0aW9uIHdpdGggbm8gYEByZXR1cm5gIGNhbGxlZCBuZXh0IHRvIGBAd2FybmAgaW4gU2FzcyAzLjNcbi8vLyB0byB0cmlnZ2VyIGEgY29tcGlsaW5nIGVycm9yIGFuZCBzdG9wIHRoZSBwcm9jZXNzLlxuLy8vXG5AZnVuY3Rpb24gbm9vcCgpIHt9XG5cbi8vL1xuLy8vIERldGVybWluZXMgd2hldGhlciBhIGxpc3Qgb2YgY29uZGl0aW9ucyBpcyBpbnRlcmNlcHRlZCBieSB0aGUgc3RhdGljIGJyZWFrcG9pbnQuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICAgJGNvbmRpdGlvbnMgIC0gTWVkaWEgcXVlcnkgY29uZGl0aW9uc1xuLy8vXG4vLy8gQHJldHVybiB7Qm9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbmRpdGlvbnMgYXJlIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludFxuLy8vXG5AZnVuY3Rpb24gaW0taW50ZXJjZXB0cy1zdGF0aWMtYnJlYWtwb2ludCgkY29uZGl0aW9ucy4uLikge1xuICAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRpbS1uby1tZWRpYS1icmVha3BvaW50KTtcblxuICBAaWYgbm90ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlIHtcblx0QGlmIGltLWxvZygnYCN7JGltLW5vLW1lZGlhLWJyZWFrcG9pbnR9YCBpcyBub3QgYSB2YWxpZCBicmVha3BvaW50LicpIHt9XG4gIH1cblxuICBAZWFjaCAkY29uZGl0aW9uIGluICRjb25kaXRpb25zIHtcblx0QGlmIG5vdCBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcblx0ICAkb3BlcmF0b3I6IGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRjb25kaXRpb24pO1xuXHQgICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xuXHQgICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGNvbmRpdGlvbiwgJG9wZXJhdG9yKTtcblxuXHQgIEBpZiAoJHByZWZpeCA9PSAnbWF4JyBhbmQgJHZhbHVlIDw9ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSBvclxuXHRcdCAgKCRwcmVmaXggPT0gJ21pbicgYW5kICR2YWx1ZSA+ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSB7XG5cdFx0QHJldHVybiBmYWxzZTtcblx0ICB9XG5cdH0gQGVsc2UgaWYgbm90IGluZGV4KCRpbS1uby1tZWRpYS1leHByZXNzaW9ucywgJGNvbmRpdGlvbikge1xuXHQgIEByZXR1cm4gZmFsc2U7XG5cdH1cbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vL1xuLy8vIFBhcnNpbmcgZW5naW5lXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gR2V0IG9wZXJhdG9yIG9mIGFuIGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBvcGVyYXRvciBmcm9tXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gQW55IG9mIGA+PWAsIGA+YCwgYDw9YCwgYDxgLCBg4omlYCwgYOKJpGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKSB7XG4gIEBlYWNoICRvcGVyYXRvciBpbiAoJz49JywgJz4nLCAnPD0nLCAnPCcsICfiiaUnLCAn4omkJykge1xuXHRAaWYgc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcblx0ICBAcmV0dXJuICRvcGVyYXRvcjtcblx0fVxuICB9XG5cbiAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcbiAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAkXzogaW0tbG9nKCdObyBvcGVyYXRvciBmb3VuZCBpbiBgI3skZXhwcmVzc2lvbn1gLicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCBkaW1lbnNpb24gb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IGRpbWVuc2lvbiBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGB3aWR0aGAgb3IgYGhlaWdodGAgKG9yIHBvdGVudGlhbGx5IGFueXRoaW5nIGVsc2UpXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHBhcnNlZC1kaW1lbnNpb246IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgMCwgJG9wZXJhdG9yLWluZGV4IC0gMSk7XG4gICRkaW1lbnNpb246ICd3aWR0aCc7XG5cbiAgQGlmIHN0ci1sZW5ndGgoJHBhcnNlZC1kaW1lbnNpb24pID4gMCB7XG5cdCRkaW1lbnNpb246ICRwYXJzZWQtZGltZW5zaW9uO1xuICB9XG5cbiAgQHJldHVybiAkZGltZW5zaW9uO1xufVxuXG5cbi8vL1xuLy8vIEdldCBkaW1lbnNpb24gcHJlZml4IGJhc2VkIG9uIGFuIG9wZXJhdG9yXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG9wZXJhdG9yIC0gT3BlcmF0b3Jcbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBgbWluYCBvciBgbWF4YFxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcikge1xuICBAcmV0dXJuIGlmKGluZGV4KCgnPCcsICc8PScsICfiiaQnKSwgJG9wZXJhdG9yKSwgJ21heCcsICdtaW4nKTtcbn1cblxuXG4vLy9cbi8vLyBHZXQgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IHZhbHVlIGZyb21cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG9wZXJhdG9yIC0gT3BlcmF0b3IgZnJvbSBgJGV4cHJlc3Npb25gXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gQSBudW1lcmljIHZhbHVlXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XG4gICRvcGVyYXRvci1pbmRleDogc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xuICAkdmFsdWU6IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yLWluZGV4ICsgc3RyLWxlbmd0aCgkb3BlcmF0b3IpKTtcblxuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIHtcblx0JHZhbHVlOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHZhbHVlKTtcbiAgfSBAZWxzZSB7XG5cdCR2YWx1ZTogdG8tbnVtYmVyKCR2YWx1ZSk7XG4gIH1cblxuICAkaW50ZXJ2YWw6IG1hcC1nZXQoJHVuaXQtaW50ZXJ2YWxzLCB1bml0KCR2YWx1ZSkpO1xuXG4gIEBpZiBub3QgJGludGVydmFsIHtcblx0Ly8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuXHQvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuXHQvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cblx0Ly8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcblx0Ly8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuXHQkXzogaW0tbG9nKCdVbmtub3duIHVuaXQgYCN7dW5pdCgkdmFsdWUpfWAuJyk7XG4gIH1cblxuICBAaWYgJG9wZXJhdG9yID09ICc+JyB7XG5cdCR2YWx1ZTogJHZhbHVlICsgJGludGVydmFsO1xuICB9IEBlbHNlIGlmICRvcGVyYXRvciA9PSAnPCcge1xuXHQkdmFsdWU6ICR2YWx1ZSAtICRpbnRlcnZhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG5cbi8vL1xuLy8vIFBhcnNlIGFuIGV4cHJlc3Npb24gdG8gcmV0dXJuIGEgdmFsaWQgbWVkaWEtcXVlcnkgZXhwcmVzc2lvblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBwYXJzZVxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIFZhbGlkIG1lZGlhIHF1ZXJ5XG4vLy9cbkBmdW5jdGlvbiBwYXJzZS1leHByZXNzaW9uKCRleHByZXNzaW9uKSB7XG4gIC8vIElmIGl0IGlzIHBhcnQgb2YgJG1lZGlhLWV4cHJlc3Npb25zLCBpdCBoYXMgbm8gb3BlcmF0b3JcbiAgLy8gdGhlbiB0aGVyZSBpcyBubyBuZWVkIHRvIGdvIGFueSBmdXJ0aGVyLCBqdXN0IHJldHVybiB0aGUgdmFsdWVcbiAgQGlmIG1hcC1oYXMta2V5KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pIHtcblx0QHJldHVybiBtYXAtZ2V0KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pO1xuICB9XG5cbiAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkZXhwcmVzc2lvbik7XG4gICRkaW1lbnNpb246IGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XG4gICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG5cbiAgQHJldHVybiAnKCN7JHByZWZpeH0tI3skZGltZW5zaW9ufTogI3skdmFsdWV9KSc7XG59XG5cbi8vL1xuLy8vIFNsaWNlIGAkbGlzdGAgYmV0d2VlbiBgJHN0YXJ0YCBhbmQgYCRlbmRgIGluZGV4ZXNcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc2xpY2Vcbi8vLyBAcGFyYW0ge051bWJlcn0gJHN0YXJ0IFsxXSAtIFN0YXJ0IGluZGV4XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbmQgW2xlbmd0aCgkbGlzdCldIC0gRW5kIGluZGV4XG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fSBTbGljZWQgbGlzdFxuLy8vXG5AZnVuY3Rpb24gc2xpY2UoJGxpc3QsICRzdGFydDogMSwgJGVuZDogbGVuZ3RoKCRsaXN0KSkge1xuICBAaWYgbGVuZ3RoKCRsaXN0KSA8IDEgb3IgJHN0YXJ0ID4gJGVuZCB7XG5cdEByZXR1cm4gKCk7XG4gIH1cblxuICAkcmVzdWx0OiAoKTtcblxuICBAZm9yICRpIGZyb20gJHN0YXJ0IHRocm91Z2ggJGVuZCB7XG5cdCRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCBudGgoJGxpc3QsICRpKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbi8vLy9cbi8vLyBTdHJpbmcgdG8gbnVtYmVyIGNvbnZlcnRlclxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vL1xuXG5cbi8vL1xuLy8vIENhc3RzIGEgc3RyaW5nIGludG8gYSBudW1iZXJcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBiZSBwYXJzZWRcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vL1xuQGZ1bmN0aW9uIHRvLW51bWJlcigkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG5cdEByZXR1cm4gJHZhbHVlO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnc3RyaW5nJyB7XG5cdCRfOiBpbS1sb2coJ1ZhbHVlIGZvciBgdG8tbnVtYmVyYCBzaG91bGQgYmUgYSBudW1iZXIgb3IgYSBzdHJpbmcuJyk7XG4gIH1cblxuICAkZmlyc3QtY2hhcmFjdGVyOiBzdHItc2xpY2UoJHZhbHVlLCAxLCAxKTtcbiAgJHJlc3VsdDogMDtcbiAgJGRpZ2l0czogMDtcbiAgJG1pbnVzOiAoJGZpcnN0LWNoYXJhY3RlciA9PSAnLScpO1xuICAkbnVtYmVyczogKCcwJzogMCwgJzEnOiAxLCAnMic6IDIsICczJzogMywgJzQnOiA0LCAnNSc6IDUsICc2JzogNiwgJzcnOiA3LCAnOCc6IDgsICc5JzogOSk7XG5cbiAgLy8gUmVtb3ZlICsvLSBzaWduIGlmIHByZXNlbnQgYXQgZmlyc3QgY2hhcmFjdGVyXG4gIEBpZiAoJGZpcnN0LWNoYXJhY3RlciA9PSAnKycgb3IgJGZpcnN0LWNoYXJhY3RlciA9PSAnLScpIHtcblx0JHZhbHVlOiBzdHItc2xpY2UoJHZhbHVlLCAyKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyLWxlbmd0aCgkdmFsdWUpIHtcblx0JGNoYXJhY3Rlcjogc3RyLXNsaWNlKCR2YWx1ZSwgJGksICRpKTtcblxuXHRAaWYgbm90IChpbmRleChtYXAta2V5cygkbnVtYmVycyksICRjaGFyYWN0ZXIpIG9yICRjaGFyYWN0ZXIgPT0gJy4nKSB7XG5cdCAgQHJldHVybiB0by1sZW5ndGgoaWYoJG1pbnVzLCAtJHJlc3VsdCwgJHJlc3VsdCksIHN0ci1zbGljZSgkdmFsdWUsICRpKSlcblx0fVxuXG5cdEBpZiAkY2hhcmFjdGVyID09ICcuJyB7XG5cdCAgJGRpZ2l0czogMTtcblx0fSBAZWxzZSBpZiAkZGlnaXRzID09IDAge1xuXHQgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMCArIG1hcC1nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpO1xuXHR9IEBlbHNlIHtcblx0ICAkZGlnaXRzOiAkZGlnaXRzICogMTA7XG5cdCAgJHJlc3VsdDogJHJlc3VsdCArIG1hcC1nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpIC8gJGRpZ2l0cztcblx0fVxuICB9XG5cbiAgQHJldHVybiBpZigkbWludXMsIC0kcmVzdWx0LCAkcmVzdWx0KTtcbn1cblxuXG4vLy9cbi8vLyBBZGQgYCR1bml0YCB0byBgJHZhbHVlYFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGFkZCB1bml0IHRvXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR1bml0IC0gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB1bml0XG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gYCR2YWx1ZWAgZXhwcmVzc2VkIGluIGAkdW5pdGBcbi8vL1xuQGZ1bmN0aW9uIHRvLWxlbmd0aCgkdmFsdWUsICR1bml0KSB7XG4gICR1bml0czogKCdweCc6IDFweCwgJ2NtJzogMWNtLCAnbW0nOiAxbW0sICclJzogMSUsICdjaCc6IDFjaCwgJ3BjJzogMXBjLCAnaW4nOiAxaW4sICdlbSc6IDFlbSwgJ3JlbSc6IDFyZW0sICdwdCc6IDFwdCwgJ2V4JzogMWV4LCAndncnOiAxdncsICd2aCc6IDF2aCwgJ3ZtaW4nOiAxdm1pbiwgJ3ZtYXgnOiAxdm1heCk7XG5cbiAgQGlmIG5vdCBpbmRleChtYXAta2V5cygkdW5pdHMpLCAkdW5pdCkge1xuXHQkXzogaW0tbG9nKCdJbnZhbGlkIHVuaXQgYCN7JHVuaXR9YC4nKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlICogbWFwLWdldCgkdW5pdHMsICR1bml0KTtcbn1cblxuLy8vXG4vLy8gVGhpcyBtaXhpbiBhaW1zIGF0IHJlZGVmaW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24ganVzdCBmb3IgdGhlIHNjb3BlIG9mXG4vLy8gdGhlIGNhbGwuIEl0IGlzIGhlbHBmdWwgd2hlbiBoYXZpbmcgYSBjb21wb25lbnQgbmVlZGluZyBhbiBleHRlbmRlZFxuLy8vIGNvbmZpZ3VyYXRpb24gc3VjaCBhcyBjdXN0b20gYnJlYWtwb2ludHMgKHJlZmVycmVkIHRvIGFzIHR3ZWFrcG9pbnRzKVxuLy8vIGZvciBpbnN0YW5jZS5cbi8vL1xuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vha3BvaW50cyBbKCldIC0gTWFwIG9mIHR3ZWFrcG9pbnRzIHRvIGJlIG1lcmdlZCB3aXRoIGAkYnJlYWtwb2ludHNgXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucyBbKCldIC0gTWFwIG9mIHR3ZWFrZWQgbWVkaWEgZXhwcmVzc2lvbnMgdG8gYmUgbWVyZ2VkIHdpdGggYCRtZWRpYS1leHByZXNzaW9uYFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCB0aGUgZ2xvYmFsIGJyZWFrcG9pbnRzIHdpdGggYSB0d2Vha3BvaW50XG4vLy8gIEBpbmNsdWRlIG1lZGlhLWNvbnRleHQoKCdjdXN0b20nOiA2NzhweCkpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgbWVkaWEgZXhwcmVzc2lvbnMgd2l0aCBhIGN1c3RvbSBvbmVcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgnYWxsJzogJ2FsbCcpKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSgnYWxsJywgJz5waG9uZScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgYm90aCBjb25maWd1cmF0aW9uIG1hcHNcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSwgKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJywgJzw9Y3VzdG9tJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG5AbWl4aW4gbWVkaWEtY29udGV4dCgkdHdlYWtwb2ludHM6ICgpLCAkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgpKSB7XG4gIC8vIFNhdmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGdsb2JhbC1icmVha3BvaW50czogJGJyZWFrcG9pbnRzO1xuICAkZ2xvYmFsLW1lZGlhLWV4cHJlc3Npb25zOiAkbWVkaWEtZXhwcmVzc2lvbnM7XG5cbiAgLy8gVXBkYXRlIGdsb2JhbCBjb25maWd1cmF0aW9uXG4gICRicmVha3BvaW50czogbWFwLW1lcmdlKCRicmVha3BvaW50cywgJHR3ZWFrcG9pbnRzKSAhZ2xvYmFsO1xuICAkbWVkaWEtZXhwcmVzc2lvbnM6IG1hcC1tZXJnZSgkbWVkaWEtZXhwcmVzc2lvbnMsICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucykgIWdsb2JhbDtcblxuICBAY29udGVudDtcblxuICAvLyBSZXN0b3JlIGdsb2JhbCBjb25maWd1cmF0aW9uXG4gICRicmVha3BvaW50czogJGdsb2JhbC1icmVha3BvaW50cyAhZ2xvYmFsO1xuICAkbWVkaWEtZXhwcmVzc2lvbnM6ICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnMgIWdsb2JhbDtcbn1cblxuLy8vL1xuLy8vIGluY2x1ZGUtbWVkaWEgcHVibGljIGV4cG9zZWQgQVBJXG4vLy8gQGF1dGhvciBFZHVhcmRvIEJvdWNhc1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8vXG5cblxuLy8vXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgYmFzZWQgb24gYSBsaXN0IG9mIGNvbmRpdGlvbnNcbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHNpbmdsZSBzZXQgYnJlYWtwb2ludFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCB0d28gc2V0IGJyZWFrcG9pbnRzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD10YWJsZXQnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGN1c3RvbSB2YWx1ZXNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49MzU4cHgnLCAnPDg1MHB4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBzZXQgYnJlYWtwb2ludHMgd2l0aCBjdXN0b20gdmFsdWVzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+ZGVza3RvcCcsICc8PTEzNTBweCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzdGF0aWMgZXhwcmVzc2lvblxuLy8vICBAaW5jbHVkZSBtZWRpYSgncmV0aW5hMngnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBNaXhpbmcgZXZlcnl0aGluZ1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNTBweCcsICc8dGFibGV0JywgJ3JldGluYTN4JykgeyB9XG4vLy9cbkBtaXhpbiBtZWRpYSgkY29uZGl0aW9ucy4uLikge1xuICBAaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID09IDApIG9yXG5cdCAgKG5vdCAkaW0tbWVkaWEtc3VwcG9ydCBhbmQgaW0taW50ZXJjZXB0cy1zdGF0aWMtYnJlYWtwb2ludCgkY29uZGl0aW9ucy4uLikpIHtcblx0QGNvbnRlbnQ7XG4gIH0gQGVsc2UgaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID4gMCkge1xuXHRAbWVkaWEgI3t1bnF1b3RlKHBhcnNlLWV4cHJlc3Npb24obnRoKCRjb25kaXRpb25zLCAxKSkpfSB7XG5cdCAgLy8gUmVjdXJzaXZlIGNhbGxcblx0ICBAaW5jbHVkZSBtZWRpYShzbGljZSgkY29uZGl0aW9ucywgMikuLi4pIHtcblx0XHRAY29udGVudDtcblx0ICB9XG5cdH1cbiAgfVxufVxuIiwiLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG49ICAgICAgICAgICAgQ2hvaWNlcyAgICAgICAgICAgID1cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG4kY2hvaWNlcy1zZWxlY3RvcjogJ2Nob2ljZXMnICFkZWZhdWx0O1xuJGNob2ljZXMtZm9udC1zaXplLWxnOiAxNnB4ICFkZWZhdWx0O1xuJGNob2ljZXMtZm9udC1zaXplLW1kOiAxNHB4ICFkZWZhdWx0O1xuJGNob2ljZXMtZm9udC1zaXplLXNtOiAxMnB4ICFkZWZhdWx0O1xuJGNob2ljZXMtZ3V0dGVyaW5nOiAyNHB4ICFkZWZhdWx0O1xuJGNob2ljZXMtYm9yZGVyLXJhZGl1czogM3B4ICFkZWZhdWx0O1xuJGNob2ljZXMtYm9yZGVyLXJhZGl1cy1pdGVtOiAzcHggIWRlZmF1bHQ7XG4kY2hvaWNlcy1iZy1jb2xvcjogI2ZmZiAhZGVmYXVsdDtcbiRjaG9pY2VzLWJnLWNvbG9yLWRpc2FibGVkOiAjRUFFQUVBICFkZWZhdWx0O1xuJGNob2ljZXMtYmctY29sb3ItZHJvcGRvd246ICNGRkZGRkYgIWRlZmF1bHQ7XG4kY2hvaWNlcy10ZXh0LWNvbG9yOiAjMzMzMzMzICFkZWZhdWx0O1xuJGNob2ljZXMta2V5bGluZS1jb2xvcjogI0RERERERCAhZGVmYXVsdDtcbiRjaG9pY2VzLXByaW1hcnktY29sb3I6ICRibHVlICFkZWZhdWx0O1xuJGNob2ljZXMtZGlzYWJsZWQtY29sb3I6ICNlYWVhZWEgIWRlZmF1bHQ7XG4kY2hvaWNlcy1oaWdobGlnaHQtY29sb3I6ICRjaG9pY2VzLXByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG4kY2hvaWNlcy1idXR0b24taWNvbi1wYXRoOiAnLi4vaW1hZ2VzJyAhZGVmYXVsdDtcbiRjaG9pY2VzLWJ1dHRvbi1kaW1lbnNpb246IDhweCAhZGVmYXVsdDtcbiRjaG9pY2VzLWJ1dHRvbi1vZmZzZXQ6IDhweCAhZGVmYXVsdDtcblxuLiN7JGNob2ljZXMtc2VsZWN0b3J9IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAkY2hvaWNlcy1ndXR0ZXJpbmc7XG4gIGZvbnQtc2l6ZTogJGNob2ljZXMtZm9udC1zaXplLWxnO1xuICAmOmZvY3VzIHsgb3V0bGluZTogbm9uZTsgfVxuICAmOmxhc3QtY2hpbGQgeyBtYXJnaW4tYm90dG9tOiAwOyB9XG4gICYuaXMtZGlzYWJsZWQge1xuXHQuI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2lubmVyLCAuI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2lucHV0IHtcblx0ICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2hvaWNlcy1iZy1jb2xvci1kaXNhYmxlZDtcblx0ICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHQgIHVzZXItc2VsZWN0OiBub25lO1xuXHR9XG5cdC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faXRlbSB7IGN1cnNvcjogbm90LWFsbG93ZWQ7IH1cbiAgfVxufVxuXG4uI3skY2hvaWNlcy1zZWxlY3Rvcn1bZGF0YS10eXBlKj1cInNlbGVjdC1vbmVcIl0ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC8vIC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faW5uZXIgeyBwYWRkaW5nLWJvdHRvbTogNy41cHg7IH1cbiAgLiN7JGNob2ljZXMtc2VsZWN0b3J9X19pbm5lciB7IHBhZGRpbmctYm90dG9tOiAzLjBweDsgfVxuICAuI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2lucHV0IHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjaG9pY2VzLWtleWxpbmUtY29sb3IgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcblx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLiN7JGNob2ljZXMtc2VsZWN0b3J9X19idXR0b24ge1xuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJGNob2ljZXMtYnV0dG9uLWljb24tcGF0aCArICcvY3Jvc3MtaW52ZXJzZS5zdmcnKTtcblx0cGFkZGluZzogMDtcblx0YmFja2dyb3VuZC1zaXplOiA4cHg7XG5cdGhlaWdodDogMTAwJTtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDUwJTtcblx0cmlnaHQ6IDA7XG5cdG1hcmdpbi10b3A6IC0xMHB4O1xuXHRtYXJnaW4tcmlnaHQ6IDI1cHg7XG5cdGhlaWdodDogMjBweDtcblx0d2lkdGg6IDIwcHg7XG5cdGJvcmRlci1yYWRpdXM6IDEwZW07XG5cdG9wYWNpdHk6IC41O1xuXHQmOmhvdmVyLCAmOmZvY3VzIHsgb3BhY2l0eTogMTsgfVxuXHQmOmZvY3VzIHsgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMnB4ICRjaG9pY2VzLWhpZ2hsaWdodC1jb2xvcjsgfVxuICB9XG4gICY6YWZ0ZXIge1xuXHRjb250ZW50OiBcIlwiO1xuXHRoZWlnaHQ6IDA7XG5cdHdpZHRoOiAwO1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItY29sb3I6ICRjaG9pY2VzLXRleHQtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci13aWR0aDogNXB4O1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHJpZ2h0OiAxMS41cHg7XG5cdHRvcDogNTAlO1xuXHRtYXJnaW4tdG9wOiAtMi41cHg7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG4gICYuaXMtb3BlbjphZnRlciB7XG5cdGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJGNob2ljZXMtdGV4dC1jb2xvciB0cmFuc3BhcmVudDtcblx0bWFyZ2luLXRvcDogLTcuNXB4O1xuICB9XG4gICZbZGlyPVwicnRsXCJdIHtcblx0JjphZnRlciB7XG5cdCAgbGVmdDogMTEuNXB4O1xuXHQgIHJpZ2h0OiBhdXRvO1xuXHR9XG5cdC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9fYnV0dG9uIHtcblx0ICByaWdodDogYXV0bztcblx0ICBsZWZ0OiAwO1xuXHQgIG1hcmdpbi1sZWZ0OiAyNXB4O1xuXHQgIG1hcmdpbi1yaWdodDogMDtcblx0fVxuICB9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfVtkYXRhLXR5cGUqPVwic2VsZWN0LW11bHRpcGxlXCJde1xuXHQmOmFmdGVyIHtcblx0ICBjb250ZW50OiBcIlwiO1xuXHQgIGhlaWdodDogMDtcblx0ICB3aWR0aDogMDtcblx0ICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXHQgIGJvcmRlci1jb2xvcjogJGNob2ljZXMtdGV4dC1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcblx0ICBib3JkZXItd2lkdGg6IDVweDtcblx0ICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdCAgcmlnaHQ6IDExLjVweDtcblx0Ly8gICB0b3A6IDUwJTtcblx0IHRvcDogMThweDtcblx0ICBtYXJnaW4tdG9wOiAtMi41cHg7XG5cdCAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdH1cblx0Ji5pcy1vcGVuOmFmdGVyIHtcblx0ICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRjaG9pY2VzLXRleHQtY29sb3IgdHJhbnNwYXJlbnQ7XG5cdCAgbWFyZ2luLXRvcDogLTcuNXB4O1xuXHR9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfVtkYXRhLXR5cGUqPVwic2VsZWN0LW11bHRpcGxlXCJdLCAuI3skY2hvaWNlcy1zZWxlY3Rvcn1bZGF0YS10eXBlKj1cInRleHRcIl0gIHtcbiAgLiN7JGNob2ljZXMtc2VsZWN0b3J9X19pbm5lciB7IGN1cnNvcjogdGV4dDsgfVxuICAuI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2J1dHRvbiB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRtYXJnaW4tdG9wOiAwO1xuXHRtYXJnaW4tcmlnaHQ6IC0kY2hvaWNlcy1idXR0b24tb2Zmc2V0LzI7XG5cdG1hcmdpbi1ib3R0b206IDA7XG5cdG1hcmdpbi1sZWZ0OiAkY2hvaWNlcy1idXR0b24tb2Zmc2V0O1xuXHRwYWRkaW5nLWxlZnQ6ICRjaG9pY2VzLWJ1dHRvbi1vZmZzZXQqMjtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBkYXJrZW4oJGNob2ljZXMtcHJpbWFyeS1jb2xvciwgMTAlKTtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRjaG9pY2VzLWJ1dHRvbi1pY29uLXBhdGggKyAnL2Nyb3NzLnN2ZycpO1xuXHRiYWNrZ3JvdW5kLXNpemU6ICRjaG9pY2VzLWJ1dHRvbi1kaW1lbnNpb247XG5cdHdpZHRoOiAkY2hvaWNlcy1idXR0b24tZGltZW5zaW9uO1xuXHRsaW5lLWhlaWdodDogMTtcblx0b3BhY2l0eTogLjc1O1xuXHQmOmhvdmVyLCAmOmZvY3VzIHsgb3BhY2l0eTogMTsgfVxuICB9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faW5uZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2hvaWNlcy1iZy1jb2xvcjtcbiAgLy9wYWRkaW5nOiA3LjVweCA3LjVweCAzLjc1cHg7XG4gIHBhZGRpbmc6IDRweCA3LjVweCAxcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjaG9pY2VzLWtleWxpbmUtY29sb3I7XG4gIGJvcmRlci1yYWRpdXM6ICRjaG9pY2VzLWJvcmRlci1yYWRpdXM7XG4gIGZvbnQtc2l6ZTogJGNob2ljZXMtZm9udC1zaXplLW1kO1xuICBtaW4taGVpZ2h0OiAzNXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAuaXMtZm9jdXNlZCAmLCAuaXMtb3BlbiAmIHsgYm9yZGVyLWNvbG9yOiBkYXJrZW4oJGNob2ljZXMta2V5bGluZS1jb2xvciwgMTUlKTsgfVxuICAuaXMtb3BlbiAmIHsgYm9yZGVyLXJhZGl1czogJGNob2ljZXMtYm9yZGVyLXJhZGl1cyAkY2hvaWNlcy1ib3JkZXItcmFkaXVzIDAgMDsgfVxuICAuaXMtZmxpcHBlZC5pcy1vcGVuICYgeyBib3JkZXItcmFkaXVzOiAwIDAgJGNob2ljZXMtYm9yZGVyLXJhZGl1cyAkY2hvaWNlcy1ib3JkZXItcmFkaXVzOyB9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfV9fbGlzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4uI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2xpc3QtLXNpbmdsZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogNHB4IDE2cHggNHB4IDRweDtcbiAgd2lkdGg6IDEwMCU7XG4gIFtkaXI9XCJydGxcIl0gJiB7XG5cdHBhZGRpbmctcmlnaHQ6IDRweDtcblx0cGFkZGluZy1sZWZ0OiAxNnB4O1xuICB9XG4gIC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faXRlbSB7IHdpZHRoOiAxMDAlOyB9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfV9fbGlzdC0tbXVsdGlwbGUge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faXRlbSB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0Ym9yZGVyLXJhZGl1czogJGNob2ljZXMtYm9yZGVyLXJhZGl1cy1pdGVtO1xuXHRwYWRkaW5nOiAzcHggMTBweDtcblx0Zm9udC1zaXplOiAkY2hvaWNlcy1mb250LXNpemUtc207XG5cdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdG1hcmdpbi1yaWdodDogNHB4O1xuXHRtYXJnaW4tdG9wOiAwcHg7XG5cdG1hcmdpbi1ib3R0b206IDNweDtcblx0YmFja2dyb3VuZC1jb2xvcjogJGNob2ljZXMtcHJpbWFyeS1jb2xvcjtcblx0Ym9yZGVyOiAxcHggc29saWQgZGFya2VuKCRjaG9pY2VzLXByaW1hcnktY29sb3IsIDUlKTtcblx0Y29sb3I6ICNGRkZGRkY7XG5cdHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcblx0JltkYXRhLWRlbGV0YWJsZV0geyBwYWRkaW5nLXJpZ2h0OiA1cHg7IH1cblx0W2Rpcj1cInJ0bFwiXSAmIHtcblx0ICBtYXJnaW4tcmlnaHQ6IDA7XG5cdCAgbWFyZ2luLWxlZnQ6IDMuNzVweDtcblx0fVxuXHQmLmlzLWhpZ2hsaWdodGVkIHtcblx0ICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGNob2ljZXMtcHJpbWFyeS1jb2xvciwgNSUpO1xuXHQgIGJvcmRlcjogMXB4IHNvbGlkIGRhcmtlbigkY2hvaWNlcy1wcmltYXJ5LWNvbG9yLCAxMCUpO1xuXHR9XG5cdC5pcy1kaXNhYmxlZCAmIHtcblx0ICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGNob2ljZXMtZGlzYWJsZWQtY29sb3IsIDI1JSk7XG5cdCAgYm9yZGVyOiAxcHggc29saWQgZGFya2VuKCRjaG9pY2VzLWRpc2FibGVkLWNvbG9yLCAzNSUpO1xuXHR9XG4gIH1cbn1cblxuLiN7JGNob2ljZXMtc2VsZWN0b3J9X19saXN0LS1kcm9wZG93biB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjaG9pY2VzLWJnLWNvbG9yLWRyb3Bkb3duO1xuICBib3JkZXI6IDFweCBzb2xpZCAkY2hvaWNlcy1rZXlsaW5lLWNvbG9yO1xuICB0b3A6IDEwMCU7XG4gIG1hcmdpbi10b3A6IC0xcHg7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRjaG9pY2VzLWJvcmRlci1yYWRpdXM7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkY2hvaWNlcy1ib3JkZXItcmFkaXVzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gICYuaXMtYWN0aXZlIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgLmlzLW9wZW4gJiB7IGJvcmRlci1jb2xvcjogZGFya2VuKCRjaG9pY2VzLWtleWxpbmUtY29sb3IsIDE1JSk7IH1cbiAgLmlzLWZsaXBwZWQgJiB7XG5cdHRvcDogYXV0bztcblx0Ym90dG9tOiAxMDAlO1xuXHRtYXJnaW4tdG9wOiAwO1xuXHRtYXJnaW4tYm90dG9tOiAtMXB4O1xuXHRib3JkZXItcmFkaXVzOiAuMjVyZW0gLjI1cmVtIDAgMDtcbiAgfVxuICAuI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2xpc3Qge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG1heC1oZWlnaHQ6IDMwMHB4O1xuXHRvdmVyZmxvdzogYXV0bztcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXHR3aWxsLWNoYW5nZTogc2Nyb2xsLXBvc2l0aW9uO1xuICB9XG4gIC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faXRlbSB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0cGFkZGluZzogMTBweDtcblx0Zm9udC1zaXplOiAkY2hvaWNlcy1mb250LXNpemUtbWQ7XG5cdFtkaXI9XCJydGxcIl0gJiB7IHRleHQtYWxpZ246IHJpZ2h0OyB9XG4gIH1cbiAgLiN7JGNob2ljZXMtc2VsZWN0b3J9X19pdGVtLS1zZWxlY3RhYmxlIHtcblx0QG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG5cdCAgcGFkZGluZy1yaWdodDogMTAwcHg7XG5cdCAgJjphZnRlciB7XG5cdFx0Y29udGVudDogYXR0cihkYXRhLXNlbGVjdC10ZXh0KTtcblx0XHRmb250LXNpemU6ICRjaG9pY2VzLWZvbnQtc2l6ZS1zbTtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRyaWdodDogMTBweDtcblx0XHR0b3A6IDUwJTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdCAgfVxuXHQgIFtkaXI9XCJydGxcIl0gJiB7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0cGFkZGluZy1sZWZ0OiAxMDBweDtcblx0XHRwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuXHRcdCY6YWZ0ZXIge1xuXHRcdCAgcmlnaHQ6IGF1dG87XG5cdFx0ICBsZWZ0OiAxMHB4O1xuXHRcdH1cblx0ICB9XG5cdH1cblx0Ji5pcy1oaWdobGlnaHRlZCB7XG5cdCAgYmFja2dyb3VuZC1jb2xvcjogbWl4KCMwMDAwMDAsICNGRkZGRkYsIDUlKTtcblx0ICAmOmFmdGVyIHsgb3BhY2l0eTogLjU7IH1cblx0fVxuICB9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faXRlbSB7IGN1cnNvcjogZGVmYXVsdDsgfVxuLiN7JGNob2ljZXMtc2VsZWN0b3J9X19pdGVtLS1zZWxlY3RhYmxlIHsgY3Vyc29yOiBwb2ludGVyOyB9XG4uI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2l0ZW0tLWRpc2FibGVkIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIG9wYWNpdHk6IC41O1xufVxuXG4uI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2hlYWRpbmcge1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6ICRjaG9pY2VzLWZvbnQtc2l6ZS1zbTtcbiAgcGFkZGluZzogMTBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGxpZ2h0ZW4oJGNob2ljZXMta2V5bGluZS1jb2xvciwgMTAlKTtcbiAgY29sb3I6IGxpZ2h0ZW4oIzMzMywgMzAlKTtcbn1cblxuLiN7JGNob2ljZXMtc2VsZWN0b3J9X19idXR0b24ge1xuICB0ZXh0LWluZGVudDogLTk5OTlweDtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgJjpmb2N1cyB7IG91dGxpbmU6IG5vbmU7IH1cbn1cblxuLiN7JGNob2ljZXMtc2VsZWN0b3J9X19pbnB1dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IG1peCgjMDAwMDAwLCAjRkZGRkZGLCAyLjUlKTtcbiAgZm9udC1zaXplOiAkY2hvaWNlcy1mb250LXNpemUtbWQ7XG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDtcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgcGFkZGluZzogNHB4IDAgNHB4IDJweCAhaW1wb3J0YW50O1xuICAmOmZvY3VzIHsgb3V0bGluZTogMDsgfVxuICBbZGlyPVwicnRsXCJdICYge1xuXHRwYWRkaW5nLXJpZ2h0OiAycHg7XG5cdHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuXG4uI3skY2hvaWNlcy1zZWxlY3Rvcn1fX3BsYWNlaG9sZGVyIHsgb3BhY2l0eTogLjU7IH1cblxuLyo9PT09PSAgRW5kIG9mIENob2ljZXMgID09PT09PSovXG4iLCIvLyBCdXR0b24gc3R5bGVzLlxuLndwZm9ybXMtYWRtaW4tcGFnZSB7XG5cblx0LndwZm9ybXMtYnRuIHtcblx0XHRib3JkZXI6IDA7XG5cdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdH1cblxuXHQud3Bmb3Jtcy1idG4tYmxvY2sge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cblx0LndwZm9ybXMtYnRuLW1kIHtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRwYWRkaW5nOiA4cHggMTJweDtcblx0XHRtaW4taGVpZ2h0OiAzNXB4O1xuXHR9XG5cblx0LndwZm9ybXMtYnRuLWxnIHtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRwYWRkaW5nOiAxNnB4IDI4cHg7XG5cdH1cblxuXHQud3Bmb3Jtcy1idG4tb3JhbmdlIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkb3JhbmdlO1xuXHRcdGJvcmRlci1jb2xvcjogJG9yYW5nZTtcblx0XHRjb2xvcjogI2ZmZjtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGRhcmtvcmFuZ2U7XG5cdFx0XHRib3JkZXItY29sb3I6ICRkYXJrb3JhbmdlO1xuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLWJ0bi1ncmV5IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xuXHRcdGJvcmRlci1jb2xvcjogI2NjYztcblx0XHRjb2xvcjogIzY2NjtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Q3ZDdkNztcblx0XHRcdGJvcmRlci1jb2xvcjogI2NjYztcblx0XHRcdGNvbG9yOiAjNDQ0O1xuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLWJ0bi1saWdodC1ncmV5IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG5cdFx0Y29sb3I6ICM2NjY7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG5cdFx0XHRjb2xvcjogIzQ0NDtcblx0XHR9XG5cdH1cblxuXHQud3Bmb3Jtcy1idG4tdHJhbnMtZ3JlZW4ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG5vbmU7XG5cdFx0Y29sb3I6ICRncmVlbjtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuO1xuXHRcdFx0Y29sb3I6ICNmZmY7XG5cdFx0fVxuXG5cdFx0LnVuZGVybGluZSB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRjb250ZW50OiBcIiBcIjtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAkZ3JlZW47XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0Ym90dG9tOiAtNXB4O1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZGFzaGljb25zIHtcblx0XHRcdGhlaWdodDogMThweDtcblx0XHR9XG5cdH1cbn1cbiIsIi8vIEFsZXJ0IHN0eWxlcy5cbi8vIFN0eWxpbmcgdHdlYWtzIGZvciBqUXVlcnktY29uZmlybSBKUyBhbGVydCBsaWJyYXJ5LlxuYm9keSB7XG5cblx0ZGl2Lmpjb25maXJtIHtcblxuXHRcdCosXG5cdFx0Kjo6YmVmb3JlLFxuXHRcdCo6OmFmdGVyIHtcblx0XHRcdC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0fVxuXG5cdFx0ZGl2Lmpjb25maXJtLWJveC1jb250YWluZXIge1xuXG5cdFx0XHRkaXYuamNvbmZpcm0tYm94IHtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMDtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAycHggNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcblxuXHRcdFx0XHRkaXYuamNvbmZpcm0tY2xvc2VJY29uIHtcblx0XHRcdFx0XHRjb2xvcjogcmdiYSgwLDAsMCwwLjQpO1xuXHRcdFx0XHRcdHRvcDogOHB4O1xuXHRcdFx0XHRcdHJpZ2h0OiA4cHg7XG5cblx0XHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRcdGNvbG9yOiByZ2JhKDAsMCwwLDAuODApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGRpdi5qY29uZmlybS1ib3gge1xuXG5cdFx0XHRkaXYuamNvbmZpcm0tdGl0bGUtYyB7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDI2cHggMCAhaW1wb3J0YW50O1xuXHRcdFx0XHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cblx0XHRcdFx0c3Bhbi5qY29uZmlybS1pY29uLWMge1xuXHRcdFx0XHRcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xuXHRcdFx0XHRcdGNvbG9yOiAjYzRjNGM0ICFpbXBvcnRhbnQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRzcGFuLmpjb25maXJtLXRpdGxlIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHRjb2xvcjogIzMzMztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHNwYW4uamNvbmZpcm0taWNvbi1jICsgc3Bhbi5qY29uZmlybS10aXRsZSB7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogMjBweCAhaW1wb3J0YW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGRpdi5qY29uZmlybS1jb250ZW50LXBhbmUge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAyNnB4O1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblxuXHRcdFx0XHQuamNvbmZpcm0tY29udGVudCB7XG5cdFx0XHRcdFx0b3ZlcmZsb3c6IGluaGVyaXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0ZGl2Lmpjb25maXJtLWNvbnRlbnQge1xuXHRcdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0XHRcdGNvbG9yOiAjNTU1O1xuXHRcdFx0XHRsaW5lLWhlaWdodDogMS40O1xuXG5cdFx0XHRcdCYubGl0ZS11cGdyYWRlIHtcblx0XHRcdFx0XHRwIHtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRcdFx0XHRcdHBhZGRpbmc6IDAgMjBweDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRwIHtcblx0XHRcdFx0XHRtYXJnaW46IDAgMCAxNnB4O1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogMS41O1xuXG5cdFx0XHRcdFx0JjpsYXN0LW9mLXR5cGUge1xuXHRcdFx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYubGFyZ2Uge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYuc21hbGwge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC5hbHJlYWR5LXB1cmNoYXNlZCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0XHRcdGNvbG9yOiAjY2NjO1xuXHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuXHRcdFx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGRpdi5qY29uZmlybS1idXR0b25zIHtcblxuXHRcdFx0XHQuYWxyZWFkeS1wdXJjaGFzZWQge1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdFx0XHRjb2xvcjogI2FhYTtcblx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdFx0cGFkZGluZy10b3A6IDIwcHg7XG5cblx0XHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRcdGNvbG9yOiAjOTk5O1xuXHRcdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC5kaXNjb3VudC1ub3RlIHtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRtYXJnaW46IDMwcHggMCAwO1xuXG5cdFx0XHRcdHAge1xuXHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmYWZmYWM7XG5cdFx0XHRcdFx0bWFyZ2luOiAwIC0zMHB4O1xuXHRcdFx0XHRcdHBhZGRpbmc6IDI0cHggNjBweCAyMHB4O1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRcdFx0XHRjb2xvcjogIzRkNGQ0ZDtcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRcdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0XHRcdGNvbnRlbnQ6ICdcXGYwNTgnO1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdFx0Zm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIEZvbnRBd2Vzb21lO1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMjZweDtcblx0XHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdFx0XHRcdHBhZGRpbmc6IDVweCA2cHg7XG5cdFx0XHRcdFx0XHR0ZXh0LXJlbmRlcmluZzogYXV0bztcblx0XHRcdFx0XHRcdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRcdFx0XHRcdFx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHRcdHRvcDogLTIwcHg7O1xuXHRcdFx0XHRcdFx0cmlnaHQ6IDUwJTtcblx0XHRcdFx0XHRcdG1hcmdpbi1yaWdodDogLTE4cHg7XG5cdFx0XHRcdFx0XHRjb2xvcjogIzNhYmMwMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0XHRcdGNvbG9yOiAjM2FiYzAxO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0Y29sb3I6ICNhYWE7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogMTJweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpbnB1dFt0eXBlPXRleHRdIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdHdpZHRoOiA5OSU7XG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNkNmQ2ZDY7XG5cdFx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRcdG1hcmdpbjogMjBweCBhdXRvIDAgYXV0bztcblx0XHRcdH1cblxuXHRcdFx0I3dwZm9ybXMtZW1iZWQtc2hvcnRjb2RlIHtcblx0XHRcdFx0bWFyZ2luOiAyMHB4IDA7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdFx0XHRwYWRkaW5nOiA4cHggNXB4O1xuXHRcdFx0fVxuXG5cdFx0XHQjd3Bmb3Jtcy1lbWJlZC1zaG9ydGNvZGU6ZGlzYWJsZWQge1xuXHRcdFx0XHRjb2xvcjogIzMzMztcblx0XHRcdH1cblxuXHRcdFx0YnV0dG9uLmJ0bi1jb25maXJtIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG9yYW5nZTtcblx0XHRcdFx0Y29sb3I6ICNmZmY7XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cblx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGRhcmtvcmFuZ2U7XG5cdFx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkZGFya29yYW5nZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQuZXJyb3Ige1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHRjb2xvcjogcmVkO1xuXHRcdFx0fVxuXG5cdFx0XHQud3Bmb3Jtcy1lcnJvciB7XG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNlYmNjZDEgIWltcG9ydGFudDtcblx0XHRcdH1cblxuXHRcdFx0Lmpjb25maXJtLXRpdGxlLWMgLmpjb25maXJtLWljb24tYyB7XG5cdFx0XHRcdC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuXHRcdFx0XHR0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0XHRcdC13ZWJraXQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0XHRcdC1tcy10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcblx0XHRcdFx0dHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0XHRcdGZvbnQtc2l6ZTogNDVweCAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5jaG9pY2VzIHtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXG5cdFx0aW5wdXRbdHlwZT10ZXh0XS5jaG9pY2VzX19pbnB1dCB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcblx0XHR9XG5cdH1cbn1cbiIsIi8vIEFsZXJ0IHN0eWxlcy5cbi53cGZvcm1zLWFkbWluLXBhZ2Uge1xuXG5cdC53cGZvcm1zLWFsZXJ0IHtcblx0XHRwYWRkaW5nOiAxNnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDE4cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cblx0XHRoNCB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDAgMCAxNXB4IDA7XG5cblx0XHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYud3Bmb3Jtcy1hbGVydC1ub21hcmdpbiB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0Ji53cGZvcm1zLWFsZXJ0LXNtYWxsIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHR9XG5cblx0XHQmLndwZm9ybXMtYWxlcnQtc3VjY2VzcyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZGZmMGQ4O1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAjZDZlOWM2O1xuXHRcdFx0Y29sb3I6ICMzYzc2M2Q7XG5cdFx0fVxuXG5cdFx0Ji53cGZvcm1zLWFsZXJ0LWluZm8ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNztcblx0XHRcdGJvcmRlci1jb2xvcjogI2JjZThmMTtcblx0XHRcdGNvbG9yOiAjMzE3MDhmO1xuXHRcdH1cblxuXHRcdCYud3Bmb3Jtcy1hbGVydC13YXJuaW5nIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7XG5cdFx0XHRib3JkZXItY29sb3I6ICNmYWViY2M7XG5cdFx0XHRjb2xvcjogIzhhNmQzYjtcblx0XHR9XG5cblx0XHQmLndwZm9ybXMtYWxlcnQtZGFuZ2VyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7XG5cdFx0XHRib3JkZXItY29sb3I6ICNlYmNjZDE7XG5cdFx0XHRjb2xvcjogI2E5NDQ0Mjtcblx0XHR9XG5cdH1cbn0iLCIvLyBGbGFnIGljb25zLlxuLndwZm9ybXMtZmxhZyB7XG5cdHdpZHRoOiAxNnB4O1xuXHRoZWlnaHQ6IDE2cHg7XG5cdGJhY2tncm91bmQ6dXJsKC4uL2ltYWdlcy9mbGFncy5wbmcpIG5vLXJlcGVhdDtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hZCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggMH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWFlIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAwfVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctYWYge2JhY2tncm91bmQtcG9zaXRpb246IC00OHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hZyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggMH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWFpIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAwfVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctYWwge2JhY2tncm91bmQtcG9zaXRpb246IC05NnB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hbSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hbiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hbyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hciB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hcyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hdCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hdSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hdyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1heiB7YmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJhIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJiIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJkIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJlIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJmIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJnIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJoIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1iaSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xNnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctYmoge2JhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTE2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ibiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xNnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctYm8ge2JhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTE2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1icyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC0xNnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctYnQge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1idyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ieSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ieiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jYSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jZCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jZiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jZyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0zMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY2gge2JhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMzJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWNpIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jayB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0zMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY2wge2JhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMzJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWNtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jbiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0zMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY28ge2JhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMzJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWNyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY3Uge2JhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY3Yge2JhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY3kge2JhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY3oge2JhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZGUge2JhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZGoge2JhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZGsge2JhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtNDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWRtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTQ4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1kbyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZHoge2JhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtNDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWVjIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTQ4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1lZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZWcge2JhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtNDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWVoIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTQ4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1lciB7YmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWVzIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWV0IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWZpIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWZqIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWZtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWZvIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWZyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTY0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1nYSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC02NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZ2Ige2JhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWdkIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTY0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1nZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC02NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZ2cge2JhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWdoIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTY0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1naSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC02NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZ2wge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1nbSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1nbiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ncCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ncSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1nciB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ndCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ndSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC04MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZ3cge2JhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtODBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWd5IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1oayB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC04MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaG4ge2JhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtODBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWhyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1odCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC04MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaHUge2JhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtODBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWlkIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaWUge2JhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaWwge2JhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaW0ge2JhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaW4ge2JhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaXEge2JhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaXIge2JhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaXMge2JhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtOTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWl0IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTk2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1qZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctam0ge2JhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtOTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWpvIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTk2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1qcCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWcta2Uge2JhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtOTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWtnIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTk2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1raCB7YmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTEycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1raSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTExMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWcta20ge2JhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xMTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWtuIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTEycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1rcCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTExMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWcta3Ige2JhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xMTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWt3IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTEycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1reSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xMTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWt6IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTExMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbGEge2JhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTEycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1sYiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0xMTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWxjIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTExMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbGkge2JhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTEycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1sayB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0xMTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWxyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTExMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbHMge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTEyOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbHQge2JhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xMjhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWx1IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTI4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1sdiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTEyOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbHkge2JhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xMjhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW1hIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTI4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tYyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTEyOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbWQge2JhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTI4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xMjhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW1nIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTEyOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbWgge2JhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMTI4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tayB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xMjhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW1sIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTEyOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbW0ge2JhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtMTI4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tbiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC0xMjhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW1vIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNDRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW1xIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTQ0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tciB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE0NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbXMge2JhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xNDRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW10IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTQ0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tdSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE0NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbXYge2JhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xNDRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW13IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE0NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbXgge2JhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTQ0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1teSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xNDRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW16IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTE0NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbmEge2JhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMTQ0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1uYyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0xNDRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW5lIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTE0NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbmcge2JhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMTQ0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1uaSB7YmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTYwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ubCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE2MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbm8ge2JhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xNjBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW5wIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTYwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1uciB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE2MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbnoge2JhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNjBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW9tIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTYwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1wYSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xNjBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXBlIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTE2MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcGYge2JhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTYwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1wZyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0xNjBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXBoIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTE2MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcGsge2JhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTYwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1wbCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0xNjBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXByIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTE2MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcHMge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTE3NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcHQge2JhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xNzZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXB3IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTc2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1weSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE3NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcWEge2JhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xNzZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXJlIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTc2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ybyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE3NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcnMge2JhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTc2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ydSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xNzZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXJ3IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE3NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc2Ege2JhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMTc2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1zYiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xNzZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXNjIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTE3NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc2Qge2JhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtMTc2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1zZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC0xNzZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXNnIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xOTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXNpIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTkycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1zayB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE5MnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc2wge2JhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xOTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXNtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTkycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1zbiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE5MnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc28ge2JhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xOTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXNyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE5MnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc3Qge2JhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTkycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1zdiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xOTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXN5IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTE5MnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc3oge2JhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMTkycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10YyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0xOTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXRkIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTE5MnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdGcge2JhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMTkycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10aCB7YmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMjA4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10aiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTIwOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdGwge2JhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0yMDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXRtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMjA4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10biB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTIwOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdG8ge2JhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0yMDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXRyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMjA4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10dCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0yMDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXR2IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTIwOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdHcge2JhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMjA4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10eiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0yMDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXVhIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTIwOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdWcge2JhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMjA4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy11cyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0yMDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXV5IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTIwOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdXoge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTIyNHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdmEge2JhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0yMjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXZjIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMjI0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy12ZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTIyNHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdmcge2JhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0yMjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXZpIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMjI0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy12biB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTIyNHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdnUge2JhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMjI0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy13cyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0yMjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXllIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTIyNHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctemEge2JhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMjI0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy16bSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0yMjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXp3IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTIyNHB4fVxuIiwiLy8gSGVhZGVyIHN0eWxlcy5cblxuI3dwZm9ybXMtaGVhZGVyLXRlbXAge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG1hcmdpbjogMDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IC0xcHg7XG5cdGxlZnQ6IDIwcHg7XG5cdHJpZ2h0OiAyMHB4O1xuXHR6LWluZGV4OiA5OTtcbn1cblxuI3dwZm9ybXMtaGVhZGVyIHtcblx0Ym9yZGVyLXRvcDogM3B4IHNvbGlkICRvcmFuZ2U7XG5cdHBhZGRpbmc6IDIycHggMjBweDtcblxuXHRpbWcge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbjogMDtcblx0XHRtYXgtd2lkdGg6IDIzNXB4O1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI8PXRhYmxldFwiKSB7XG5cdFx0XHRtYXgtd2lkdGg6IDIwMHB4O1xuXHRcdH1cblx0fVxufVxuIiwiLy8gUGFnZSB0aXRsZSBhbmQgdGFicyBzdHlsZXMuXG4ud3Bmb3Jtcy1hZG1pbi13cmFwIHtcblxuXHQvLyBUaXRsZSBhcmVhLlxuXHQucGFnZS10aXRsZSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRtYXJnaW46IDAgMCAyMHB4IDA7XG5cdFx0cGFkZGluZzogMTVweCAyMHB4O1xuXG5cdFx0LmFkZC1uZXctaDIge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDI4cHg7XG5cdFx0fVxuXHR9XG59XG5cbi8vIFRhYiBuYXZpZ2F0aW9uLlxuLndwZm9ybXMtYWRtaW4tdGFicyB7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdG1hcmdpbjogMCAwIDIwcHggMDtcblx0cGFkZGluZzogMCAyMHB4O1xuXHRsaXN0LXN0eWxlOiBub25lO1xuXHRvdmVyZmxvdzogYXV0bztcblx0Zm9udC1zaXplOiAxNHB4O1xuXG5cdGxpIHtcblx0XHRtYXJnaW46IDAgMzBweCAwIDA7XG5cdFx0cGFkZGluZzogMDtcblx0XHRmbG9hdDogbGVmdDtcblxuXHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cblx0XHRhIHtcblx0XHRcdGNvbG9yOiAjNjY2O1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRwYWRkaW5nOiAyMHB4IDAgMThweCAwO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmZmY7XG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjOTk5O1xuXHRcdFx0fVxuXG5cdFx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJG9yYW5nZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi8vIEdlbmVyYWwgYWRtaW4gc3R5bGluZy5cblxuLy8gQ29yZSBhZG1pbiBzdHlsZSBvdmVycmlkZXMuXG4jd3Bjb250ZW50IHtcblx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRAaW5jbHVkZSBtZWRpYShcIjw9cGhvbmVcIikge1xuXHRcdHBhZGRpbmctdG9wOiA0NnB4O1xuXHR9XG59XG5cbiN3cGJvZHkge1xuXHRAaW5jbHVkZSBtZWRpYShcIjw9cGhvbmVcIikge1xuXHRcdHBhZGRpbmctdG9wOiAwO1xuXHR9XG59XG5cbi8vIFRoaXMgY2xhc3MgaXMgYXV0byBhcHBsaWVkIHRvIF9hbGxfIFdQRm9ybXMgYWRtaW4gcGFnZXMvc2NyZWVucy5cbi53cGZvcm1zLWFkbWluLXBhZ2Uge1xuXG5cdC8vIFRoaXMgaXMgaGlkZGVuIG9uIGxvYWQsIHRoZW4gbWFkZSB2aXNpYmxlIHdpdGggSlMsIHRvXG5cdC8vIHByZXZlbnQgaXQgZnJvbSBcImp1bXBpbmdcIi5cblx0I3NjcmVlbi1tZXRhLWxpbmtzLFxuXHQjc2NyZWVuLW1ldGEge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQvLyBSZXNwb25zaXZlIHZpZGVvIGNvbnRhaW5lciwgcmVwbGFjZXMgSlMgbWV0aG9kLlxuXHQudmlkZW8tY29udGFpbmVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0cGFkZGluZy1ib3R0b206IDU2LjElO1xuXHRcdC8vIHBhZGRpbmctdG9wOiAzMHB4O1xuXHRcdGhlaWdodDogMDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG5cblx0LnZpZGVvLWNvbnRhaW5lciBpZnJhbWUsXG5cdC52aWRlby1jb250YWluZXIgb2JqZWN0LFxuXHQudmlkZW8tY29udGFpbmVyIGVtYmVkIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHR9XG5cblx0Ly8gRmFuY3kgZmlsZSB1cGxvYWQuXG5cdC53cGZvcm1zLWZpbGUtdXBsb2FkIHtcblxuXHRcdGlucHV0W3R5cGU9ZmlsZV0ge1xuXHRcdFx0d2lkdGg6IDAuMXB4O1xuXHRcdFx0aGVpZ2h0OiAwLjFweDtcblx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0ei1pbmRleDogLTE7XG5cdFx0fVxuXG5cdFx0bGFiZWwge1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0fVxuXG5cdFx0aW5wdXRbdHlwZT1maWxlXTpmb2N1cyArIGxhYmVsLFxuXHRcdGlucHV0W3R5cGU9ZmlsZV0uaGFzLWZvY3VzICsgbGFiZWwge1xuXHRcdFx0b3V0bGluZTogMXB4IGRvdHRlZCAjMDAwO1xuXHRcdFx0b3V0bGluZTogLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIGF1dG8gNXB4O1xuXHRcdH1cblxuXHRcdC5mbGQge1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdGNvbG9yOiAjMzMzO1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRcdHBhZGRpbmc6IDdweCAxMnB4O1xuXHRcdFx0bWFyZ2luOiAwIDEwcHggMCAwO1xuXHRcdFx0d2lkdGg6IDQwMHB4O1xuXHRcdFx0bWluLWhlaWdodDogMzVweDtcblxuXHRcdFx0LnBsYWNlaG9sZGVyIHtcblx0XHRcdFx0Y29sb3I6ICNjY2M7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0c3Ryb25nIC5mYSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDhweDtcblx0XHR9XG5cdH1cblxuXHQvLyBHZW5yaWMgY2xhc3MgZm9yIGhpZGluZyBkaXNwbGF5O1xuXHQud3Bmb3Jtcy1oaWRlIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Ly8gUGxhY2Vob2xkZXIgaDEgZm9yIGFkbWluIG5vdGljZXMuXG5cdC53cGZvcm1zLWgxLXBsYWNlaG9sZGVyIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Ly8gSGlkZSBub3RpY2VzIG9uIGxvYWQgdG8gcHJldmVudCBqdW1waW5nLiBKUyB3aWxsIHJldmVhbCB0aGVtLlxuXHQubm90aWNlIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG59XG5cbi8vIEFkbWluIHdyYXAgLSBjb250YWlucyBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgaGVhZGVyLlxuLndwZm9ybXMtYWRtaW4td3JhcCB7XG5cblx0bWFyZ2luOiAwO1xuXG5cdC5ub3RpY2Uge1xuXHRcdG1hcmdpbi1sZWZ0OiAyMHB4ICFpbXBvcnRhbnQ7XG5cdFx0bWFyZ2luLXJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLy8gQWRtaW4gY29udGVudC5cbi53cGZvcm1zLWFkbWluLWNvbnRlbnQge1xuXHRwYWRkaW5nLWxlZnQ6IDIwcHg7XG5cdHBhZGRpbmctcmlnaHQ6IDIwcHg7XG5cblx0JjpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6IFwiIFwiO1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHR9XG5cblx0JjphZnRlciB7XG5cdFx0Y2xlYXI6IGJvdGg7XG5cdFx0Y29udGVudDogXCIgXCI7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdH1cbn1cblxuLndwZm9ybXMtY2xlYXIge1xuXG5cdCY6YmVmb3JlIHtcblx0XHRjb250ZW50OiBcIiBcIjtcblx0XHRkaXNwbGF5OiB0YWJsZTtcblx0fVxuXG5cdCY6YWZ0ZXIge1xuXHRcdGNsZWFyOiBib3RoO1xuXHRcdGNvbnRlbnQ6IFwiIFwiO1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHR9XG59XG5cbi53cGZvcm1zLWFkbWluLWNvbHVtbnMge1xuXG5cdCYgPiBkaXZbY2xhc3MqPVwiLWNvbHVtbi1cIl0ge1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHR9XG5cblx0LndwZm9ybXMtYWRtaW4tY29sdW1uLTIwIHt3aWR0aDogMjAlfVxuXHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tMzMge3dpZHRoOiAzMy4zMzMzMyV9XG5cdC53cGZvcm1zLWFkbWluLWNvbHVtbi00MCB7d2lkdGg6IDQwJX1cblx0LndwZm9ybXMtYWRtaW4tY29sdW1uLTUwIHt3aWR0aDogNTAlfVxuXHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tNjAge3dpZHRoOiA2MCV9XG5cdC53cGZvcm1zLWFkbWluLWNvbHVtbi04MCB7d2lkdGg6IDgwJX1cblxuXHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tbGFzdCB7ZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnR9XG5cblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRkaXNwbGF5OiB0YWJsZTtcblx0XHRjbGVhcjogYm90aDtcblx0fVxufVxuIiwiLy8gRm9ybSBPdmVydmlldyAtIGFkbWluLnBocD9wYWdlPXdwZm9ybXMtb3ZlcnZpZXdcbiN3cGZvcm1zLW92ZXJ2aWV3IHtcblxuXHQvLyBSZW1vdmUgdGhlIHRvcCBtYXJnaW4gc28gaXQgZGlzcGxheXMgMjBweCBiZXR3ZWVuIHRoZSBoZWFkZXIgYXJlYVxuXHQvLyBhbmQgdGhlIGNvbnRlbnQsIGNvbnNpc3RlbnQgd2l0aCBvdXIgb3RoZXIgYWRtaW4gcGFnZXMuXG5cdC50YWJsZW5hdi50b3Age1xuXHRcdG1hcmdpbi10b3A6IDA7XG5cdH1cblxuXHQvLyBTZXQgY2VydGFpbiBjb2x1bW4gd2lkdGhzLlxuXHQud3AtbGlzdC10YWJsZSB7XG5cblx0XHQuY29sdW1uLWlkIHtcblx0XHRcdHdpZHRoOiAzMHB4O1xuXHRcdH1cblxuXHRcdC5jb2x1bW4tZW50cmllcyB7XG5cdFx0XHR3aWR0aDogNzBweDtcblx0XHR9XG5cblx0XHQuY29sdW1uLXNob3J0Y29kZSB7XG5cdFx0XHR3aWR0aDogMTUwcHg7XG5cdFx0fVxuXG5cdFx0LmNvbHVtbi1jcmVhdGVkIHtcblx0XHRcdHdpZHRoOiAxNDVweDtcblx0XHR9XG5cdH1cbn1cbiIsIi8vIEVudHJpZXMgU2luZ2xlIChEZXRhaWxzKSAtIGFkbWluLnBocD9wYWdlPXdwZm9ybXMtZW50cmllcyZ2aWV3PWRldGFpbHNcbiN3cGZvcm1zLWVudHJpZXMtc2luZ2xlIHtcblxuXHQjcG9zdHN0dWZmIHtcblx0XHRwYWRkaW5nOiAwO1xuXHR9XG5cblx0Ly8gTWV0YWJveGVzIGFyZSBub3QgbW92YWJsZSBzbyBkb24ndCBsZXQgdGhlIHVzZXIgdGhpbmsgc28uXG5cdC5wb3N0Ym94IC5obmRsZSB7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQvLyBFbnRyeSBuYXZpZ2F0aW9uIC0gbmV4dC9wcmV2LlxuXHQud3Bmb3Jtcy1lbnRyeS1uYXZpZ2F0aW9uIHtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0bGluZS1oZWlnaHQ6IDI5cHg7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRwYWRkaW5nLXRvcDogMnB4O1xuXHRcdHBhZGRpbmctcmlnaHQ6IDFweDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI8PXBob25lXCIpIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmFkZC1uZXctaDIge1xuXHRcdFx0dG9wOiBhdXRvO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZzogNHB4IDBweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8PXRhYmxldFwiKSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdH1cblxuXHRcdFx0LmRhc2hpY29ucyB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdFx0XHR3aWR0aDogMjhweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDI5cHg7XG5cdFx0XHR9XG5cblx0XHRcdCYuaW5hY3RpdmUge1xuXHRcdFx0XHRvcGFjaXR5OiAwLjU7XG5cdFx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZW50cnktbmF2aWdhdGlvbi10ZXh0IHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1lbnRyeS1jdXJyZW50IHtcblx0XHRcdHRvcDogYXV0bztcblx0XHRcdG1hcmdpbjogMCAtNXB4IDAgLTNweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdHBhZGRpbmc6IDRweCAxMHB4O1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2NjYztcblx0XHRcdC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMnB4O1xuXHRcdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAyOXB4O1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IGNlbnRlcjtcblx0XHR9XG5cblx0fVxuXG5cdC8vIEVudHJ5IGZpZWxkcyBtZXRhYm94LlxuXHQjd3Bmb3Jtcy1lbnRyeS1maWVsZHMge1xuXG5cdFx0aDIuaG5kbGUge1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXG5cdFx0XHQuZGFzaGljb25zIHtcblx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0XHRoZWlnaHQ6IDE2cHg7XG5cdFx0XHRcdHdpZHRoOiAxNnB4O1xuXHRcdFx0XHRtYXJnaW46IDRweCA0cHggMCAwO1xuXHRcdFx0XHRjb2xvcjogJG9yYW5nZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQubm8tZmllbGRzIHtcblx0XHRcdHBhZGRpbmc6IDEycHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0Lmluc2lkZSB7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXG5cdFx0XHRwIHtcblx0XHRcdFx0cGFkZGluZzogMDtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQud3Bmb3Jtcy1lbnRyeS1maWVsZC1uYW1lIHtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ViZjNmYjtcblx0XHRcdFx0cGFkZGluZzogOHB4IDEycHg7XG5cdFx0XHR9XG5cblx0XHRcdC53cGZvcm1zLWVudHJ5LWZpZWxkLXZhbHVlIHtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0XHRcdFx0cGFkZGluZzogOHB4IDEycHg7XG5cdFx0XHR9XG5cblx0XHRcdC5lbXB0eSAud3Bmb3Jtcy1lbnRyeS1maWVsZC12YWx1ZSB7XG5cdFx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdFx0Y29sb3I6ICM5OTk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZW1wdHktZmllbGQtdG9nZ2xlIHtcblx0XHRcdGZsb2F0OiByaWdodDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdHBhZGRpbmc6IDVweCAwIDA7XG5cdFx0fVxuXHR9XG5cblx0Ly8gRW50cnkgTm90ZXMgbWV0YWJveC5cblx0I3dwZm9ybXMtZW50cnktbm90ZXMge1xuXG5cdFx0Lmluc2lkZSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdH1cblxuXHRcdC53cGZvcm1zLWVudHJ5LW5vdGVzLW5ldyB7XG5cdFx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdH1cblxuXHRcdGZvcm0ge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQuYnRucyB7XG5cdFx0XHRvdmVyZmxvdzogYXV0bztcblx0XHRcdHBhZGRpbmc6IDhweCAwO1xuXHRcdH1cblxuXHRcdC5uby1ub3RlcyB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiA0cHggMTBweCA4cHg7XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZW50cnktbm90ZXMtc2luZ2xlIHtcblx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2UzZTFlMztcblxuXHRcdFx0cDpsYXN0LW9mLXR5cGUge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQmLmV2ZW4ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53cGZvcm1zLWVudHJ5LW5vdGVzLWJ5bGluZSB7XG5cdFx0XHRjb2xvcjogIzg4ODtcblx0XHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cblx0XHRcdC5zZXAge1xuXHRcdFx0XHRjb2xvcjogI2RkZDtcblx0XHRcdH1cblxuXHRcdFx0Lm5vdGVzLXVzZXIge1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0XHR9XG5cblx0XHRcdC5ub3RlLWRlbGV0ZSB7XG5cdFx0XHRcdGNvbG9yOiAjYTAwO1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cblx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0Y29sb3I6IHJlZDtcblx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBFbnRyeSBEZXRhaWxzLCBBY3Rpb25zLCBhbmQgUGF5bWVudHMuXG5cdCN3cGZvcm1zLWVudHJ5LWRldGFpbHMgLmluc2lkZSxcblx0I3dwZm9ybXMtZW50cnktcGF5bWVudCAuaW5zaWRlLFxuXHQjd3Bmb3Jtcy1lbnRyeS1hY3Rpb25zIC5pbnNpZGUge1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAwO1xuXHR9XG5cblx0LndwZm9ybXMtZW50cnktZGV0YWlscy1tZXRhLFxuXHQud3Bmb3Jtcy1lbnRyeS1hY3Rpb25zLW1ldGEgIHtcblx0XHRwYWRkaW5nOiA2cHggMCAwO1xuXHR9XG5cblx0LndwZm9ybXMtZW50cnktZGV0YWlscy1tZXRhIHAsXG5cdC53cGZvcm1zLWVudHJ5LXBheW1lbnQtbWV0YSBwLFxuXHQud3Bmb3Jtcy1lbnRyeS1hY3Rpb25zLW1ldGEgcCB7XG5cdFx0cGFkZGluZzogNnB4IDEwcHggOHB4O1xuXHRcdG1hcmdpbjogMDtcblx0fVxuXG5cdC53cGZvcm1zLWVudHJ5LXBheW1lbnQtbWV0YSB7XG5cdFx0cGFkZGluZzogMDtcblx0fVxuXG5cdC53cGZvcm1zLWVudHJ5LXBheW1lbnQtbWV0YSBwIHtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcblx0XHRwYWRkaW5nOiAxMHB4O1xuXHR9XG5cblx0LndwZm9ybXMtZW50cnktcGF5bWVudC1tZXRhIHA6bGFzdC1vZi10eXBlIHtcblx0XHRib3JkZXItYm90dG9tOiAwO1xuXHR9XG5cblx0LndwZm9ybXMtZW50cnktZGV0YWlscy1tZXRhIHN0cm9uZyxcblx0LndwZm9ybXMtZW50cnktYWN0aW9ucy1tZXRhIHN0cm9uZyB7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0fVxuXG5cdC53cGZvcm1zLWVudHJ5LWRldGFpbHMtbWV0YSAuZGFzaGljb25zLFxuXHQud3Bmb3Jtcy1lbnRyeS1hY3Rpb25zLW1ldGEgLmRhc2hpY29ucyB7XG5cdFx0cGFkZGluZzogMCAycHggMCAwO1xuXHRcdGNvbG9yOiAjODI4NzhBO1xuXHRcdHRvcDogLTFweDtcblx0XHRsZWZ0OiAtMXB4O1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdH1cblxuXHQjd3Bmb3Jtcy1lbnRyeS1kZXRhaWxzIC5zdWJtaXRkZWxldGUge1xuXHRcdGNvbG9yOiAjYTAwO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRwYWRkaW5nOiAxcHggMnB4O1xuXHR9XG5cblx0I3dwZm9ybXMtZW50cnktZGV0YWlscyAuc3VibWl0ZGVsZXRlOmhvdmVyIHtcblx0XHRjb2xvcjogcmVkO1xuXHR9XG5cblx0LndwZm9ybXMtZW50cnktYWN0aW9ucy1tZXRhIGEge1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0fVxuXG5cdC53cGZvcm1zLWVudHJ5LWFjdGlvbnMtbWV0YSBhOmhvdmVyIHtcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0fVxuXG5cdC8vIEVudHJ5IExvY2F0aW9uLlxuXHQjd3Bmb3Jtcy1lbnRyeS1nZW9sb2NhdGlvbiB7XG5cblx0XHQuaW5zaWRlIHtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0dWwge1xuXHRcdFx0bWFyZ2luOiAwO1xuXG5cdFx0XHRsaSB7XG5cdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdG92ZXJmbG93OiBhdXRvO1xuXG5cdFx0XHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZ2VvbG9jYXRpb24tbWV0YSB7XG5cdFx0XHR3aWR0aDogODVweDtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2VlZTtcblx0XHRcdHBhZGRpbmc6IDEwcHggMjBweCAxMHB4IDEycHg7XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZ2VvbG9jYXRpb24tdmFsdWUge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0cGFkZGluZzogMTBweCAxMnB4IDEwcHggMjBweDtcblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1mbGFnIHtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcblx0XHRcdG1hcmdpbi1yaWdodDogNHB4O1xuXHRcdH1cblx0fVxufVxuIiwiLy8gRW50cmllcyBMaXN0IC0gYWRtaW4ucGhwP3BhZ2U9d3Bmb3Jtcy1lbnRyaWVzJnZpZXc9bGlzdFxuI3dwZm9ybXMtZW50cmllcy1saXN0IHtcblxuXHQuZm9ybS1kZXRhaWxzIHtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTVweDtcblx0XHRtYXJnaW46IDAgMCAxMHB4O1xuXG5cdFx0LmZvcm0tZGV0YWlscy1zdWIge1xuXHRcdFx0Y29sb3I6ICM5OTk7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRtYXJnaW46IDAgMCA4cHggMDtcblx0XHR9XG5cblx0XHQuZm9ybS1kZXRhaWxzLXRpdGxlIHtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRcdG1hcmdpbjogMDtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8MTIwMHB4XCIpIHtcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmZvcm0tc2VsZWN0b3Ige1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0XHQudG9nZ2xlIHtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0XHRjb2xvcjogIzQ0NDtcblx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0XHRib3gtc2hhZG93OiBub25lO1xuXG5cdFx0XHRcdCY6aG92ZXIsXG5cdFx0XHRcdCYuYWN0aXZlIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlM2UzO1xuXHRcdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQuZm9ybS1saXN0IHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDJweCA4cHggMCByZ2JhKDAsMCwwLDAuMSk7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0dG9wOiAyN3B4O1xuXHRcdFx0XHRsZWZ0OiAtMTA4cHg7XG5cdFx0XHRcdHdpZHRoOiAyMzBweDtcblx0XHRcdFx0cGFkZGluZzogMTBweCAwO1xuXHRcdFx0XHR6LWluZGV4OiA5OTkxO1xuXG5cdFx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0XHRjb250ZW50OiBcIiBcIjtcblx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0dG9wOiAtMTBweDtcblx0XHRcdFx0XHRsZWZ0OiAxMTBweDtcblx0XHRcdFx0XHR3aWR0aDogMDtcblx0XHRcdFx0XHRoZWlnaHQ6IDA7XG5cdFx0XHRcdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRcdFx0XHRib3JkZXItd2lkdGg6IDAgOHB4IDEwcHggOHB4O1xuXHRcdFx0XHRcdGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZmZiB0cmFuc3BhcmVudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHR1bCB7XG5cdFx0XHRcdG1heC1oZWlnaHQ6IDE5NnB4O1xuXHRcdFx0XHRvdmVyZmxvdy14OiBoaWRkZW47XG5cdFx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRcdG1hcmdpbjogMDtcblxuXHRcdFx0XHRsaSB7XG5cdFx0XHRcdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXG5cdFx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0XHRcdHBhZGRpbmc6IDVweCAxNXB4O1xuXHRcdFx0XHRcdFx0Y29sb3I6ICM0NDQ7XG5cblx0XHRcdFx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5mb3JtLWRldGFpbHMtYWN0aW9ucyB7XG5cdFx0XHRmbG9hdDogcmlnaHQ7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPDEyMDBweFwiKSB7XG5cdFx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0fVxuXG5cdFx0XHRhIHtcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdG1hcmdpbjogMCAxMnB4IDAgMDtcblxuXHRcdFx0XHQmOmxhc3Qtb2YtdHlwZSB7XG5cdFx0XHRcdFx0bWFyZ2luOiAwXG5cdFx0XHRcdH1cblxuXHRcdFx0XHQuZGFzaGljb25zIHtcblx0XHRcdFx0XHR3aWR0aDogMTZweDtcblx0XHRcdFx0XHRoZWlnaHQ6IDE2cHg7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gU2VhcmNoLlxuXHQuc2VhcmNoLWJveCB7XG5cdFx0LndwZm9ybXMtZm9ybS1zZWFyY2gtYm94LWZpZWxkIHtcblx0XHRcdG1heC13aWR0aDogMTgwcHg7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXHRcdFx0bWFyZ2luOiAwIDJweCAwIDA7XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZm9ybS1zZWFyY2gtYm94LWNvbXBhcmlzb24ge1xuXHRcdFx0bWF4LXdpZHRoOiA5MHB4O1xuXHRcdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0XHRcdG1hcmdpbjogMCAycHggMCAwO1xuXHRcdH1cblxuXHRcdC53cGZvcm1zLWZvcm0tc2VhcmNoLWJveC10ZXJtIHtcblx0XHRcdGhlaWdodDogMjhweDtcblx0XHRcdG1hcmdpbjogMCAycHggMCAwO1xuXHRcdH1cblx0fVxuXG5cdC8vIEZpbHRlcmluZy5cblx0LndwZm9ybXMtZmlsdGVyLWRhdGUge1xuXG5cdFx0LndwZm9ybXMtZmlsdGVyLWRhdGUtc2VsZWN0b3Ige1xuXHRcdFx0aGVpZ2h0OiAyOHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0XHRtYXgtd2lkdGg6IDIxMHB4O1xuXHRcdH1cblxuXHRcdGJ1dHRvbiB7XG5cdFx0XHRtYXJnaW46IDFweCA4cHggMCAwO1xuXHRcdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0XHR9XG5cdH1cblxuXHQvLyBXUCBUYWJsZSBzdHlsaW5nLlxuXHQud3AtbGlzdC10YWJsZSB7XG5cblx0XHQubmV3LWVudHJpZXMtbm90aWZpY2F0aW9uIHRkIHtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRhIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0cGFkZGluZzogMTBweDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuY29sdW1uLWluZGljYXRvcnMge1xuXHRcdFx0d2lkdGg6IDM1cHg7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRcdGE6Zm9jdXMge1xuXHRcdFx0XHQtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmNvbHVtbi1pbmRpY2F0b3JzIC5kYXNoaWNvbnMge1xuXHRcdFx0d2lkdGg6IDE0cHg7XG5cdFx0XHRoZWlnaHQ6IDE0cHg7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRtYXJnaW4tdG9wOiAzcHg7XG5cdFx0fVxuXG5cdFx0LmluZGljYXRvci1zdGFyIC5kYXNoaWNvbnMge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XG5cdFx0fVxuXG5cdFx0LmluZGljYXRvci1zdGFyIHtcblx0XHRcdGNvbG9yOiAjZTRlNGU0O1xuXG5cdFx0XHQmOmhvdmVyLFxuXHRcdFx0Ji51bnN0YXIge1xuXHRcdFx0XHRjb2xvcjogJG9yYW5nZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuaW5kaWNhdG9yLXJlYWQge1xuXHRcdFx0Y29sb3I6ICM5ZWRlODQ7XG5cblx0XHRcdCY6aG92ZXIsXG5cdFx0XHQmLnVucmVhZCB7XG5cdFx0XHRcdGNvbG9yOiAjZTRlNGU0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5jb2x1bW4tZGF0ZSB7XG5cdFx0XHR3aWR0aDogMTUwcHg7XG5cdFx0fVxuXG5cdFx0LmNvbHVtbi1zdGF0dXMge1xuXHRcdFx0d2lkdGg6IDEyMHB4O1xuXG5cdFx0XHRpbWcge1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdGhlaWdodDogMTJweDtcblx0XHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRcdG1hcmdpbjogMCAwIDAgM3B4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5jb2x1bW4tcGF5bWVudF90b3RhbCB7XG5cdFx0XHR3aWR0aDogMTAwcHg7XG5cdFx0fVxuXG5cdFx0LmNvbHVtbi1hY3Rpb25zIHtcblx0XHRcdHdpZHRoOiAxMDBweDtcblx0XHR9XG5cblx0XHQuc2VwIHtcblx0XHRcdGNvbG9yOiAjZGRkO1xuXHRcdH1cblxuXHRcdC5kZWxldGU6aG92ZXIge1xuXHRcdFx0Y29sb3I6IHJlZDtcblx0XHR9XG5cdH1cblxuXHQjd3Bmb3Jtcy1lbnRyaWVzLXRhYmxlLWVkaXQtY29sdW1ucyB7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdGNvbG9yOiAjY2NjO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogIzY2Njtcblx0XHR9XG5cdH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzgycHgpIHtcblxuXHQud3Bmb3Jtcy1hZG1pbi1jb250ZW50IHtcblx0XHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdFx0cGFkZGluZy1yaWdodDogMTBweDtcblx0fVxuXG5cdC53cC1saXN0LXRhYmxlIHtcblx0XHRtYXJnaW46IDAgLTEwcHggMCAtMTBweDtcblx0XHR3aWR0aDogMTAwdnc7XG5cdFx0dGFibGUtbGF5b3V0OiBhdXRvO1xuXHR9XG5cblx0LndwLWxpc3QtdGFibGUuZW50cmllcyB7XG5cblx0XHQuY29sdW1uLWluZGljYXRvcnMge1xuXHRcdFx0d2lkdGg6IGF1dG8gIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHQuaW5kaWNhdG9ycyB7XG5cdFx0XHQuaW5kaWNhdG9yLXN0YXIge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXHRcdFx0LmluZGljYXRvci1yZWFkIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0cjpub3QoLmlubGluZS1lZGl0LXJvdyk6bm90KC5uby1pdGVtcykgdGQuY29sdW1uLXByaW1hcnkge1xuXHRcdFx0aGVpZ2h0OiA4cHg7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0ei1pbmRleDogKzE7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHRvdmVyZmxvdzogdmlzaWJsZTtcblx0XHR9XG5cblx0XHQudG9nZ2xlLXJvdyB7XG5cdFx0XHRyaWdodDogNXB4O1xuXHRcdFx0dG9wOiAxNXB4O1xuXHRcdH1cblxuXHRcdHRyOm5vdCguaW5saW5lLWVkaXQtcm93KTpub3QoLm5vLWl0ZW1zKSB0ZC5jb2x1bW4tcHJpbWFyeSt0ZCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuXHRcdH1cblxuXHRcdHRyOm5vdCguaW5saW5lLWVkaXQtcm93KTpub3QoLm5vLWl0ZW1zKSB0ZC5jb2x1bW4tcHJpbWFyeX50ZCB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDVweDtcblx0XHRcdG1pbi13aWR0aDogNTB2dztcblx0XHR9XG5cblxuXHR9XG5cblx0cC5zZWFyY2gtYm94IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0d2lkdGg6IGF1dG87XG5cdH1cblxuXHRpbnB1dFt0eXBlPWNoZWNrYm94XSwgaW5wdXRbdHlwZT1yYWRpb10ge1xuXHRcdGhlaWdodDogMTZweDtcblx0XHR3aWR0aDogMTZweDtcblx0fVxuXG59IiwiLy8gV2VsY29tZSBBY3RpdmF0aW9uIC0gaW5kZXgucGhwP3BhZ2U9d3Bmb3Jtcy1nZXR0aW5nLXN0YXJ0ZWRcbiN3cGZvcm1zLXdlbGNvbWUge1xuXHRib3JkZXItdG9wOiAzcHggc29saWQgJG9yYW5nZTtcblx0Y29sb3I6ICM1NTU7XG5cdHBhZGRpbmctdG9wOiAxMTBweDtcblxuXHRAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcblx0XHRwYWRkaW5nLXRvcDogNjRweDtcblx0fVxuXG5cdCosXG5cdCo6OmJlZm9yZSxcblx0Kjo6YWZ0ZXIge1xuXHRcdC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHQtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0fVxuXG5cdC5jb250YWluZXIge1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdG1heC13aWR0aDogNzIwcHg7XG5cdFx0cGFkZGluZzogMDtcblx0fVxuXG5cdC5ibG9jayB7XG5cdFx0cGFkZGluZzogNDBweDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0cGFkZGluZzogMjBweDtcblx0XHR9XG5cdH1cblxuXHRpbWcge1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IGF1dG87XG5cdH1cblxuXHRoMSB7XG5cdFx0Y29sb3I6ICMyMjI7XG5cdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRtYXJnaW46IDAgMCAxNnB4IDA7XG5cdH1cblxuXHRoNSB7XG5cdFx0Y29sb3I6ICMyMjI7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdG1hcmdpbjogMCAwIDhweCAwO1xuXHR9XG5cblx0aDYge1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRmb250LXdlaWdodDogNDAwO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjY7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdG1hcmdpbjogMDtcblx0fVxuXG5cdHAge1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRtYXJnaW46IDAgMCAyMHB4IDA7XG5cdH1cblxuXHQuYnV0dG9uLXdyYXAge1xuXHRcdG1heC13aWR0aDogNTkwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG8gMCBhdXRvO1xuXG5cdFx0LmxlZnQge1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHR3aWR0aDogNTAlO1xuXHRcdFx0cGFkZGluZy1yaWdodDogMjBweDtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0cGFkZGluZzogMDtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQucmlnaHQge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0d2lkdGg6IDUwJTtcblx0XHRcdHBhZGRpbmctbGVmdDogMjBweDtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0cGFkZGluZzogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuaW50cm8ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgI2UxZTFlMTtcblx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMzBweDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0cGFkZGluZy10b3A6IDQwcHg7XG5cblx0XHQuc3VsbGllIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0XHRib3JkZXI6IDJweCBzb2xpZCAjZTFlMWUxO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0aGVpZ2h0OiAxMTBweDtcblx0XHRcdHdpZHRoOiAxMTBweDtcblx0XHRcdHBhZGRpbmc6IDE4cHggMTRweCAwIDE0cHg7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IC01OHB4O1xuXHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IC01NXB4O1xuXHRcdH1cblxuXHRcdC52aWRlby10aHVtYm5haWwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW46IDAgYXV0bztcblx0XHR9XG5cblx0XHQuYnV0dG9uLXdyYXAge1xuXHRcdFx0bWFyZ2luLXRvcDogMjVweDtcblx0XHR9XG5cdH1cblxuXHQuZmVhdHVyZXMge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgI2UxZTFlMTtcblx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6IDJweCAycHggMCAwO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRwYWRkaW5nLXRvcDogMjBweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMjBweDtcblxuXHRcdC5mZWF0dXJlLWxpc3Qge1xuXHRcdFx0bWFyZ2luLXRvcDogNjBweDtcblx0XHR9XG5cblx0XHQuZmVhdHVyZS1ibG9jayB7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdHdpZHRoOiA1MCU7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMzVweDtcblx0XHRcdG92ZXJmbG93OiBhdXRvO1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0fVxuXG5cdFx0XHQmLmZpcnN0IHtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogMjBweDtcblx0XHRcdFx0Y2xlYXI6IGJvdGg7XG5cblx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdFx0cGFkZGluZy1yaWdodDogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQmLmxhc3Qge1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDIwcHg7XG5cblx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGltZyB7XG5cdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHRtYXgtd2lkdGg6IDQ2cHg7XG5cdFx0XHR9XG5cblx0XHRcdGg1IHtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDY4cHhcblx0XHRcdH1cblxuXHRcdFx0cCB7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDY4cHhcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuYnV0dG9uLXdyYXAge1xuXHRcdFx0bWFyZ2luLXRvcDogMjVweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHR9XG5cdH1cblxuXHQudXBncmFkZS1jdGEge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgI2UxZTFlMTtcblx0XHRib3JkZXItdG9wOiAwO1xuXHRcdGJvcmRlci1ib3R0b206IDA7XG5cdFx0Y29sb3I6ICNmZmY7XG5cblx0XHRoMiB7XG5cdFx0XHRjb2xvcjogI2ZmZjtcblx0XHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRcdG1hcmdpbjogMCAwIDMwcHggMDtcblx0XHR9XG5cblx0XHR1bCB7XG5cdFx0XHRkaXNwbGF5OiAtbXMtZmxleDtcblx0XHRcdGRpc3BsYXk6IC13ZWJraXQtZmxleDtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHQtd2Via2l0LWZsZXgtd3JhcDogd3JhcDtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDA7XG5cblx0XHRcdGxpIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdHdpZHRoOiA1MCU7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDhweCAwO1xuXHRcdFx0XHRwYWRkaW5nOiAwO1xuXG5cdFx0XHRcdC5kYXNoaWNvbnMge1xuXHRcdFx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA1cHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQubGVmdCB7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdHdpZHRoOiA2Ni42NjY2NjYlO1xuXHRcdFx0cGFkZGluZy1yaWdodDogMjBweDtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogMDtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQucmlnaHQge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0d2lkdGg6IDMzLjMzMzMzMyU7XG5cdFx0XHRwYWRkaW5nOiAyMHB4IDAgMCAyMHB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0XHR9XG5cblx0XHRcdGgyIHtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cblx0XHRcdFx0c3BhbiB7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNTU1O1xuXHRcdFx0XHRcdHBhZGRpbmc6IDAgMTVweCAxMnB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC5wcmljZSB7XG5cdFx0XHRcdHBhZGRpbmc6IDI2cHggMDtcblxuXHRcdFx0XHQuYW1vdW50IHtcblx0XHRcdFx0XHRmb250LXNpemU6IDQ4cHg7XG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG5cdFx0XHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRcdFx0Y29udGVudDogJyQnO1xuXHRcdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRcdFx0dG9wOiAtOHB4O1xuXHRcdFx0XHRcdFx0bGVmdDogLTE2cHg7XG5cdFx0XHRcdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0LnRlcm0ge1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblxuXHR9XG5cblx0LnRlc3RpbW9uaWFscyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRib3JkZXI6IDJweCBzb2xpZCAjZTFlMWUxO1xuXHRcdGJvcmRlci10b3A6IDA7XG5cdFx0cGFkZGluZzogMjBweCAwO1xuXG5cdFx0LnRlc3RpbW9uaWFsLWJsb2NrIHtcblx0XHRcdG1hcmdpbjogNTBweCAwIDAgMDs7XG5cblx0XHRcdGltZyB7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdG1heC13aWR0aDogMTAwcHg7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAxOHB4IHJnYmEoMCwwLDAsLjIpO1xuXG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHRcdHdpZHRoOiA2NXB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHAge1xuXHRcdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDEycHggMTQwcHg7XG5cblx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDEwMHB4O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0JjpsYXN0LW9mLXR5cGUge1xuXHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuZm9vdGVyIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxO1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkICNlMWUxZTE7XG5cdFx0Ym9yZGVyLXRvcDogMDtcblx0XHRib3JkZXItcmFkaXVzOiAwIDAgMnB4IDJweDtcblx0fVxuXG5cdC8vIENoYW5nZXMgZm9yIHBhaWQgdmVyc2lvbi5cblx0Ji5wcm8ge1xuXG5cdFx0LmZlYXR1cmVzIHtcblx0XHRcdGJvcmRlcjogMnB4IHNvbGlkICNlMWUxZTE7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAzMHB4O1xuXHRcdH1cblxuXHRcdC51cGdyYWRlLFxuXHRcdC5mb290ZXIge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQudGVzdGltb25pYWxzIHtcblx0XHRcdGJvcmRlcjogMnB4IHNvbGlkICNlMWUxZTE7XG5cdFx0fVxuXHR9XG59XG5cbi5kYXNoYm9hcmRfcGFnZV93cGZvcm1zLWdldHRpbmctc3RhcnRlZCB7XG5cblx0LnZpZGVvLWNvbnRhaW5lciB7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgI2UxZTFlMTtcblx0fVxuXG5cdC8vIEhpZGUgYWRtaW4gZm9vdGVyLlxuXHQjd3Bmb290ZXIsXG5cdGRpdi5ub3RpY2Uge1xuXHRcdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblx0fVxufVxuIiwiLy8gQWRkb25zIExpc3QgLSBhZG1pbi5waHA/cGFnZT13cGZvcm1zLWFkZG9uc1xuI3dwZm9ybXMtYWRtaW4tYWRkb25zIHtcblxuXHQqLFxuXHQqOjpiZWZvcmUsXG5cdCo6OmFmdGVyIHtcblx0XHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0LW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdH1cblxuXHQuYWRkb25zLWNvbnRhaW5lciB7XG5cdFx0bWFyZ2luLWxlZnQ6IC0yMHB4O1xuXHRcdG1hcmdpbi1yaWdodDogLTIwcHg7XG5cdH1cblxuXHQudW5sb2NrLW1zZyB7XG5cdFx0cGFkZGluZzogMCAyMHB4O1xuXHRcdG1hcmdpbi10b3A6IC0yMHB4O1xuXHRcdGNsZWFyOiBib3RoO1xuXHR9XG5cblx0I3dwZm9ybXMtYWRtaW4tYWRkb25zLXNlYXJjaCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdGNvbG9yOiAjMzMzO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0cGFkZGluZzogN3B4IDEycHg7XG5cdFx0bWFyZ2luOiAtM3B4IDEwcHggMCAwO1xuXHRcdHdpZHRoOiAyMDBweDtcblx0XHRtaW4taGVpZ2h0OiAzNXB4O1xuXHRcdGZsb2F0OiByaWdodDtcblxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAjYmJiO1xuXHRcdH1cblx0fVxuXG5cdC5hZGRvbi1jb250YWluZXIge1xuXHRcdHBhZGRpbmc6IDAgMjBweDtcblx0XHRmbG9hdDogbGVmdDtcblx0XHR3aWR0aDogMzMuMzMzMzMzJTtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPDEyNTBweFwiKSB7XG5cdFx0XHR3aWR0aDogNTAlO1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXHRcdH1cblx0fVxuXG5cdGg0IHtcblx0XHRmb250LXNpemU6IDE3cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0fVxuXG5cdC5hZGRvbi1pdGVtIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdG1hcmdpbjogMCAwIDQwcHggMDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0bWFyZ2luOiAwIDBcblx0XHR9XG5cblx0XHRpbWcge1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2VlZTtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0bWF4LXdpZHRoOiA3NXB4O1xuXHRcdH1cblxuXHRcdGg1IHtcblx0XHRcdG1hcmdpbjogMCAwIDEwcHggMTAwcHg7XG5cdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDAgMCAwIDEwMHB4O1xuXHRcdH1cblxuXHRcdC5kZXRhaWxzIHtcblx0XHRcdHBhZGRpbmc6IDMwcHggMjBweDtcblxuXHRcdH1cblxuXHRcdC5hY3Rpb25zIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcblx0XHRcdHBhZGRpbmc6IDIwcHg7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRcdC5tc2cge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdFx0dG9wOiAwO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHR6LWluZGV4OiA5OTtcblx0XHRcdFx0cGFkZGluZzogMjBweDtcblx0XHRcdFx0ZGlzcGxheTogLXdlYmtpdC1ib3g7XG5cdFx0XHRcdGRpc3BsYXk6IC1tb3otYm94O1xuXHRcdFx0XHRkaXNwbGF5OiAtbXMtZmxleGJveDtcblx0XHRcdFx0ZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHQtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRcdC1tcy1hbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuXHRcdFx0XHQmLnN1Y2Nlc3Mge1xuXHRcdFx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLmVycm9yIHtcblx0XHRcdFx0XHRjb2xvcjogcmVkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnN0YXR1cyB7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdHBhZGRpbmctdG9wOiA4cHg7XG5cblx0XHRcdC5zdGF0dXMtaW5hY3RpdmUge1xuXHRcdFx0XHRjb2xvcjogcmVkO1xuXHRcdFx0fVxuXG5cdFx0XHQuc3RhdHVzLWRvd25sb2FkIHtcblx0XHRcdFx0Y29sb3I6ICM2NjY7XG5cdFx0XHR9XG5cblx0XHRcdC5zdGF0dXMtYWN0aXZlIHtcblx0XHRcdFx0Y29sb3I6ICRncmVlbjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQudXBncmFkZS1idXR0b24ge1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0XHRhIHtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdFx0d2lkdGg6IDE0MHB4O1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdHBhZGRpbmc6IDhweCA1cHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmFjdGlvbi1idXR0b24ge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXG5cdFx0XHRidXR0b24ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdFx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdFx0d2lkdGg6IDE0MHB4O1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdHBhZGRpbmc6IDhweCA1cHg7XG5cblx0XHRcdFx0Jjpob3Zlcixcblx0XHRcdFx0Ji5sb2FkaW5nIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZTllOWU5O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0LmZhIHtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDhweDtcblxuXHRcdFx0XHRcdCYuZmEtc3Bpbm5lciB7XG5cdFx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ji5zdGF0dXMtYWN0aXZlIHtcblxuXHRcdFx0XHRcdC5mYSB7XG5cdFx0XHRcdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYuc3RhdHVzLWluYWN0aXZlIHtcblxuXHRcdFx0XHRcdC5mYSB7XG5cdFx0XHRcdFx0XHRjb2xvcjogcmVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYuc3RhdHVzLWRvd25sb2FkIHtcblxuXHRcdFx0XHRcdC5mYSB7XG5cdFx0XHRcdFx0XHRjb2xvcjogIzk5OTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLmRpc2FibGVkIHtcblx0XHRcdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLmxvYWRpbmcge1xuXG5cdFx0XHRcdFx0LmZhIHtcblx0XHRcdFx0XHRcdGNvbG9yOiAjNjY2O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLy8gQWJvdXQgV1BGb3JtcyAtIGFkbWluLnBocD9wYWdlPXdwZm9ybXMtYWJvdXRcblxuJHBhZGRpbmctZGVmYXVsdDogMzBweDtcbiRib3JkZXI6IDFweCBzb2xpZCAjREREREREO1xuXG4vLyBAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcbi8vIFx0d2lkdGg6IDUwJTtcbi8vIH1cblxuLypcbid4cy1waG9uZSc6IDMyMHB4LFxuXHQncGhvbmUnOiA2MDBweCxcblx0J2lwYWQnOiA3NjhweCxcblx0J3RhYmxldCc6IDc4MnB4LFxuXHQnZGVza3RvcCc6IDk2MHB4LFxuKi9cblxuI3dwZm9ybXMtYWRtaW4tYWJvdXQge1xuXG5cdCosICo6OmJlZm9yZSwgKjo6YWZ0ZXIge1xuXHRcdC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHQtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0fVxuXG5cdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24ge1xuXHRcdG1hcmdpbjogMCAyMHB4IDIwcHg7XG5cdFx0cGFkZGluZzogJHBhZGRpbmctZGVmYXVsdDtcblx0XHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRcdGJvcmRlcjogJGJvcmRlcjtcblx0XHRsaW5lLWhlaWdodDogMjtcblxuXHRcdGgxLCBoMiwgaDMsIGg0LCBoNSB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdFx0cGFkZGluZy10b3A6IDA7XG5cdFx0XHRsaW5lLWhlaWdodDogMS42O1xuXHRcdH1cblxuXHRcdGgyIHtcblx0XHRcdGZvbnQtc2l6ZTogMjRweDtcblx0XHR9XG5cblx0XHRoMyB7XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAzMHB4O1xuXHRcdFx0Y29sb3I6ICMyMzI4MkM7XG5cdFx0fVxuXG5cdFx0dWwsIHAge1xuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblxuXHRcdFx0Ji5iaWdnZXJ7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRcdH1cblx0XHRcdCYuc21hbGxlciB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdH1cblxuXHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRociB7XG5cdFx0XHRtYXJnaW46ICRwYWRkaW5nLWRlZmF1bHQgMDtcblx0XHR9XG5cblx0XHRmaWd1cmUge1xuXHRcdFx0bWFyZ2luOiAwO1xuXG5cdFx0XHRpbWcge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdH1cblxuXHRcdFx0ZmlnY2FwdGlvbiB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdFx0Y29sb3I6ICM4ODg4ODg7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDVweDtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRsaW5lLWhlaWdodDogaW5pdGlhbDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tNDAge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAkcGFkZGluZy1kZWZhdWx0LzI7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogMjBweDtcblx0XHRcdH1cblx0XHR9XG5cdFx0LndwZm9ybXMtYWRtaW4tY29sdW1uLTYwIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLWRlZmF1bHQvMjtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHVsLmxpc3QtcGxhaW4ge1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cblx0XHRcdGxpIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR1bC5saXN0LWZlYXR1cmVzIHtcblx0XHRcdGxpIC5mYSB7XG5cdFx0XHRcdGNvbG9yOiAjMmE5YjM5O1xuXHRcdFx0XHRtYXJnaW46IDAgOHB4IDAgMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZmEtc3RhciB7Y29sb3I6IGdvbGR9XG5cblx0XHQubm8tbWFyZ2luIHttYXJnaW46IDAgIWltcG9ydGFudH1cblx0XHQubm8tcGFkZGluZyB7cGFkZGluZzogMCAhaW1wb3J0YW50fVxuXHRcdC5jZW50ZXJlZCB7dGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnR9XG5cdH1cblxuXHQud3Bmb3Jtcy1hZG1pbi1hYm91dC1zZWN0aW9uLWZpcnN0LWZvcm0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cblx0XHRAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYWRtaW4tYWJvdXQtc2VjdGlvbi1maXJzdC1mb3JtLXRleHQge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLWRlZmF1bHQ7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHRmbGV4OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24tZmlyc3QtZm9ybS12aWRlbyB7XG5cdFx0XHRpZnJhbWUge1xuXHRcdFx0XHRib3JkZXI6ICRib3JkZXI7XG5cdFx0XHR9XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogMjBweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQud3Bmb3Jtcy1hZG1pbi1hYm91dC1zZWN0aW9uLWhlcm8ge1xuXHRcdHBhZGRpbmc6IDA7XG5cblx0XHQud3Bmb3Jtcy1hZG1pbi1hYm91dC1zZWN0aW9uLWhlcm8tbWFpbixcblx0XHQud3Bmb3Jtcy1hZG1pbi1hYm91dC1zZWN0aW9uLWhlcm8tZXh0cmEge1xuXHRcdFx0cGFkZGluZzogJHBhZGRpbmctZGVmYXVsdDtcblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1hZG1pbi1hYm91dC1zZWN0aW9uLWhlcm8tZXh0cmEge1xuXG5cdFx0XHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tNTAge1xuXG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYWRtaW4tYWJvdXQtc2VjdGlvbi1oZXJvLW1haW4ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTtcblx0XHRcdGJvcmRlci1ib3R0b206ICRib3JkZXI7XG5cblx0XHRcdCYubm8tYm9yZGVyIHtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHRcdH1cblxuXHRcdFx0cCB7XG5cdFx0XHRcdGNvbG9yOiAjNjY2O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGgzLmNhbGwtdG8tYWN0aW9uIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IC0xMHB4O1xuXHRcdH1cblxuXHRcdHNwYW4ucHJpY2UtMjAtb2ZmIHtcblx0XHRcdGNvbG9yOiAjNkFCMjU1O1xuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24tc3F1YXNoZWQge1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cblx0XHQmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24tcG9zdCB7XG5cblx0XHRoMiB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAtMTBweDtcblx0XHR9XG5cblx0XHRoMyB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxNXB4O1xuXHRcdH1cblxuXHRcdHA6bGFzdC1vZi10eXBlIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDMwcHg7XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYWRtaW4tY29sdW1uLTIwIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDIwcHg7XG5cdFx0XHR3aWR0aDogYXV0bztcblxuXHRcdFx0aW1nIHtcblx0XHRcdFx0d2lkdGg6IDI3MHB4O1xuXHRcdFx0fVxuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcblx0XHRcdFx0d2lkdGg6IDIwJTtcblx0XHRcdFx0aW1nIHtcblx0XHRcdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdFx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tODAge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAyMHB4O1xuXHRcdFx0d2lkdGg6IGNhbGMoMTAwJSAtIDIwcHggLSAyNzBweCk7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHR3aWR0aDogODAlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24tcG9zdC1saW5rIHtcblx0XHRcdHBhZGRpbmc6IDEwcHggJHBhZGRpbmctZGVmYXVsdC8yO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI0RGNzczOTtcblx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0bWFyZ2luLXRvcDogMTVweDtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNCODVBMUI7XG5cdFx0XHR9XG5cblx0XHRcdC5mYSB7XG5cdFx0XHRcdGNvbG9yOiAjRURCQTlFO1xuXHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogOHB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24tdGFibGUge1xuXG5cdFx0dGFibGUge1xuXHRcdFx0Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcblxuXHRcdFx0dHIge1xuXHRcdFx0XHR0ZCB7XG5cdFx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogJGJvcmRlcjtcblx0XHRcdFx0XHRib3JkZXItcmlnaHQ6ICRib3JkZXI7XG5cdFx0XHRcdFx0cGFkZGluZzogJHBhZGRpbmctZGVmYXVsdDtcblx0XHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXG5cdFx0XHRcdFx0JjpsYXN0LW9mLXR5cGUge1xuXHRcdFx0XHRcdFx0Ym9yZGVyLXJpZ2h0OiAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCY6bGFzdC1jaGlsZCB0ZCB7XG5cdFx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRwIHtcblx0XHRcdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRcdFx0YmFja2dyb3VuZC1zaXplOiAxNXB4IGF1dG87XG5cdFx0XHRcdGJhY2tncm91bmQtcG9zaXRpb246IDAgNnB4O1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cblx0XHRcdFx0Ji5mZWF0dXJlcy1mdWxsIHtcblx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWRlZmF1bHQ7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltYWdlcy9hYm91dC9pY29uLWZ1bGwuc3ZnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQmLmZlYXR1cmVzLW5vbmUge1xuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDogJHBhZGRpbmctZGVmYXVsdDtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL2Fib3V0L2ljb24tbm9uZS5zdmcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdCYuZmVhdHVyZXMtcGFydGlhbCB7XG5cdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiAkcGFkZGluZy1kZWZhdWx0O1xuXHRcdFx0XHRcdGJhY2tncm91bmQtcG9zaXRpb246IC0zcHggMDtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLXNpemU6IDIzcHggYXV0bztcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL2Fib3V0L2ljb24tcGFydGlhbC5zdmcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYWRtaW4tYWJvdXQtc2VjdGlvbi1oZXJvLW1haW4ge1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHRcdGgzIHtcblx0XHRcdFx0cGFkZGluZzogJHBhZGRpbmctZGVmYXVsdCAkcGFkZGluZy1kZWZhdWx0ICRwYWRkaW5nLWRlZmF1bHQgJHBhZGRpbmctZGVmYXVsdCoyO1xuXHRcdFx0fVxuXHRcdFx0LndwZm9ybXMtYWRtaW4tY29sdW1uLTMzOmZpcnN0LWNoaWxkIGgzIHtcblx0XHRcdFx0cGFkZGluZzogJHBhZGRpbmctZGVmYXVsdDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQjd3Bmb3Jtcy1hZG1pbi1hZGRvbnMge1xuXHRcdHBhZGRpbmc6IDAgJHBhZGRpbmctZGVmYXVsdDtcblxuXHRcdC5hZGRvbi1jb250YWluZXIge1xuXHRcdFx0cGFkZGluZzogMCAxMHB4O1xuXHRcdH1cblxuXHRcdC5hZGRvbi1pdGVtIHtcblxuXHRcdFx0LmRldGFpbHMge1xuXHRcdFx0XHRwYWRkaW5nOiAyMHB4O1xuXHRcdFx0fVxuXG5cdFx0XHRpbWcge1xuXHRcdFx0XHRwYWRkaW5nOiAxMHB4O1xuXG5cdFx0XHRcdCZbc3JjKj1cIi1taVwiXSB7XG5cdFx0XHRcdFx0cGFkZGluZzogMTNweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQuYWN0aW9uLWJ1dHRvbiAuYnV0dG9uIHtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDI2cHg7XG5cdFx0XHRcdGhlaWdodDogMjhweDtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRwYWRkaW5nOiAwIDEwcHggMXB4O1xuXHRcdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHRcdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjY2NjY2NjO1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAjZjdmN2Y3O1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDFweCAwICNjY2NjY2M7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cblx0XHRcdFx0Jjpob3ZlciwgJjpmb2N1cyAge1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6ICNmYWZhZmE7XG5cdFx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjOTk5O1xuXHRcdFx0XHRcdGNvbG9yOiAjMjMyODJkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ji5idXR0b24tcHJpbWFyeSB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogIzAwODViYTtcblx0XHRcdFx0XHRib3JkZXItY29sb3I6ICMwMDczYWEgIzAwNjc5OSAjMDA2Nzk5O1xuXHRcdFx0XHRcdGJveC1zaGFkb3c6IDAgMXB4IDAgIzAwNjc5OTtcblx0XHRcdFx0XHRjb2xvcjogI2ZmZjtcblx0XHRcdFx0XHR0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAjMDA2Nzk5LCAxcHggMCAxcHggIzAwNjc5OSwgMCAxcHggMXB4ICMwMDY3OTksIC0xcHggMCAxcHggIzAwNjc5OTtcblxuXHRcdFx0XHRcdCY6aG92ZXIsICY6Zm9jdXMge1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogIzAwOGVjMjtcblx0XHRcdFx0XHRcdGJvcmRlci1jb2xvcjogIzAwNjc5OTtcblx0XHRcdFx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC5mYS1zcGlubmVyIHtcblx0XHRcdFx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYuYnV0dG9uLXNlY29uZGFyeSB7XG5cdFx0XHRcdFx0Y29sb3I6ICM1NTU7XG5cdFx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjY2NjY2NjO1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6ICNmN2Y3Zjc7XG5cdFx0XHRcdFx0Ym94LXNoYWRvdzogMCAxcHggMCAjY2NjY2NjO1xuXG5cdFx0XHRcdFx0Jjpob3ZlciwgJjpmb2N1cyAge1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogI2ZhZmFmYTtcblx0XHRcdFx0XHRcdGJvcmRlci1jb2xvcjogIzk5OTtcblx0XHRcdFx0XHRcdGNvbG9yOiAjMjMyODJkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYuZGlzYWJsZWQge1xuXHRcdFx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLy8gU2V0dGluZ3MgLSBhZG1pbi5waHA/cGFnZT13cGZvcm1zLXNldHRpbmdzXG4vLyBUb29scyAtIGFkbWluLnBocD9wYWdlPXdwZm9ybXMtdG9vbHNcbi53cGZvcm1zLWFkbWluLXNldHRpbmdzIHtcblxuXHQqLFxuXHQqOjpiZWZvcmUsXG5cdCo6OmFmdGVyIHtcblx0XHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0LW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdH1cblxuXHQvLyBTZXR0aW5nIHJvd3MsIGVnIGZpZWxkIHJvdy5cblx0LndwZm9ybXMtc2V0dGluZy1yb3cge1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTRlNGU0O1xuXHRcdHBhZGRpbmc6IDMwcHggMDtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuMztcblxuXHRcdCY6Zmlyc3Qtb2YtdHlwZSB7XG5cdFx0XHRwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50O1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPHRhYmxldFwiKSB7XG5cdFx0XHRwYWRkaW5nOiAyMHB4IDA7XG5cdFx0fVxuXG5cdFx0Ly8gU2VjdGlvbiBoZWFkaW5nLlxuXHRcdCYuc2VjdGlvbi1oZWFkaW5nIHtcblx0XHRcdHBhZGRpbmc6IDIwcHggMDtcblxuXHRcdFx0Ji5uby1kZXNjIHtcblx0XHRcdFx0aDQge1xuXHRcdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQud3Bmb3Jtcy1zZXR0aW5nLWZpZWxkIHtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRtYXgtd2lkdGg6IDEwMDBweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBUb29scyBmdWxsIHdpZHRoIGZpZWxkcy5cblx0XHQmLnRvb2xzIHtcblxuXHRcdFx0cCxcblx0XHRcdHA6Zmlyc3Qtb2YtdHlwZXtcblx0XHRcdFx0bWFyZ2luOiAwIDAgMTZweCAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENoZWNrYm94IHNldHRpbmdzIGZpZWxkLlxuXHRcdCYud3Bmb3Jtcy1zZXR0aW5nLXJvdy1jaGVja2JveCB7XG5cblx0XHRcdGlucHV0W3R5cGU9Y2hlY2tib3hdIHtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdG1hcmdpbjogMXB4IDAgMCAwO1xuXHRcdFx0fVxuXG5cdFx0XHQuZGVzYyB7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDAgMzBweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBMaWNlbnNlIHNldHRpbmdzIGZpZWxkLlxuXHRcdCYud3Bmb3Jtcy1zZXR0aW5nLXJvdy1saWNlbnNlIHtcblxuXHRcdFx0LndwZm9ybXMtc2V0dGluZy1sYWJlbCB7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiA4cHg7XG5cdFx0XHR9XG5cblx0XHRcdHAudHlwZSB7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDEycHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gVGV4dCBzZXR0aW5ncyBmaWVsZC5cblx0XHQmLndwZm9ybXMtc2V0dGluZy1yb3ctdGV4dCB7XG5cblx0XHRcdC53cGZvcm1zLXNldHRpbmctbGFiZWwge1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogOHB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNlbGVjdCBzZXR0aW5ncyBmaWVsZC5cblx0XHQmLndwZm9ybXMtc2V0dGluZy1yb3ctc2VsZWN0IHtcblxuXHRcdFx0LndwZm9ybXMtc2V0dGluZy1sYWJlbCB7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiA4cHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmFkaW8gc2V0dGluZ3MgZmllbGQuXG5cdFx0Ji53cGZvcm1zLXNldHRpbmctcm93LXJhZGlvIHtcblxuXHRcdFx0LndwZm9ybXMtc2V0dGluZy1maWVsZCB7XG5cblx0XHRcdFx0aW5wdXRbdHlwZT1yYWRpb10ge1xuXHRcdFx0XHRcdG1hcmdpbjogLTNweCAxMHB4IDAgMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxhYmVsIHtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDMwcHg7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHQvLyBFbWFpbCBUZW1wbGF0ZSBzZXR0aW5nIGZpZWxkLlxuXHRcdCYjd3Bmb3Jtcy1zZXR0aW5nLXJvdy1lbWFpbC10ZW1wbGF0ZSB7XG5cblx0XHRcdC53cGZvcm1zLXNldHRpbmctZmllbGQge1xuXG5cdFx0XHRcdGxhYmVsOmJlZm9yZSB7XG5cdFx0XHRcdFx0Y29udGVudDogXCIgXCI7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0d2lkdGg6IDE1NXB4O1xuXHRcdFx0XHRcdGhlaWdodDogMTgwcHg7XG5cdFx0XHRcdFx0bWFyZ2luOiAwIDAgMTBweCAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Lm9wdGlvbi1kZWZhdWx0OmJlZm9yZSB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9zZXR0aW5ncy1lbWFpbC1odG1sLnBuZykgY2VudGVyIGNlbnRlcjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC5vcHRpb24tbm9uZTpiZWZvcmUge1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvc2V0dGluZ3MtZW1haWwtcGxhaW50ZXh0LnBuZykgY2VudGVyIGNlbnRlcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJhZGlvIHNldHRpbmdzIGZpZWxkLlxuXHRcdCYud3Bmb3Jtcy1zZXR0aW5nLXJvdy1pbWFnZSB7XG5cblx0XHRcdC53cGZvcm1zLXNldHRpbmctZmllbGQge1xuXG5cdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0bWFyZ2luOiAwIDAgMjBweCAwO1xuXHRcdFx0XHRcdG1heC13aWR0aDogNDAwcHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb2xvciBwaWNrZXIgc2V0dGluZ3MgZmllbGQuXG5cdFx0Ji53cGZvcm1zLXNldHRpbmctcm93LWNvbG9yIHtcblxuXHRcdFx0LndwZm9ybXMtY29sb3ItcGlja2VyIHtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiA0MHB4O1xuXHRcdFx0fVxuXG5cdFx0XHQubWluaWNvbG9ycy1pbnB1dC1zd2F0Y2gge1xuXHRcdFx0XHR0b3A6IDdweDtcblx0XHRcdFx0bGVmdDogN3B4O1xuXHRcdFx0XHRoZWlnaHQ6IDIxcHg7XG5cdFx0XHRcdHdpZHRoOiAyMXB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gR2VuZXJhbCBlbGVtZW50cy5cblx0XHRoNCB7XG5cdFx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0bWFyZ2luOiAwIDAgNnB4IDA7XG5cdFx0fVxuXG5cdFx0aDMge1xuXHRcdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdG1hcmdpbjogMCAwIDIwcHggMDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdG1hcmdpbjogMTJweCAwIDA7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zO1xuXG5cdFx0XHQmOmZpcnN0LW9mLXR5cGUge1xuXHRcdFx0XHRtYXJnaW46IDhweCAwIDA7XG5cdFx0XHR9XG5cblx0XHRcdCYuZGVzYyB7XG5cdFx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdFx0Y29sb3I6ICM2NjY7XG5cdFx0XHR9XG5cblx0XHRcdCYuZGlzY291bnQtbm90ZSB7XG5cdFx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdFx0Y29sb3I6ICM2NjY7XG5cblx0XHRcdFx0c3Ryb25nIHtcblx0XHRcdFx0XHRjb2xvcjogZ3JlZW47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGb3JtIGVsZW1lbnRzLlxuXHRcdGlucHV0W3R5cGU9dGV4dF0sXG5cdFx0aW5wdXRbdHlwZT1wYXNzd29yZF0ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdFx0Y29sb3I6ICMzMzM7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0cGFkZGluZzogN3B4IDEycHg7XG5cdFx0XHRtYXJnaW46IDAgMTBweCAwIDA7XG5cdFx0XHR3aWR0aDogNDAwcHg7XG5cdFx0XHRtaW4taGVpZ2h0OiAzNXB4O1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYShcIjxkZXNrdG9wXCIpIHtcblx0XHRcdFx0d2lkdGg6IDMwMHB4O1xuXHRcdFx0fVxuXG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjYmJiO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRleHRhcmVhIHtcblxuXHRcdH1cblxuXHRcdGJ1dHRvbiB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdFx0fVxuXG5cdFx0LmNob2ljZXNqcy1zZWxlY3Qtd3JhcCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1heC13aWR0aDogNDAwcHg7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGRlc2t0b3BcIikge1xuXHRcdFx0XHR3aWR0aDogMzAwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnByb2dyZXNzLWJhciB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJG9yYW5nZTtcblx0XHRcdGhlaWdodDogMzBweDtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0bWFyZ2luOiAwIDAgMTZweCAwO1xuXG5cdFx0XHQmLmNvbXBsZXRlIHtcblx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZWVuO1xuXG5cdFx0XHRcdC5iYXIge1xuXHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbjtcblxuXHRcdFx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRcdFx0Y29udGVudDogbm9uZTtcblx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC5iYXIge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0YmFja2dyb3VuZDogJG9yYW5nZTtcblx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggMC41cyBlYXNlLWluLW91dDtcblx0XHRcdFx0LW1vei10cmFuc2l0aW9uOiB3aWR0aCAwLjVzIGVhc2UtaW4tb3V0O1xuXHRcdFx0XHQtby10cmFuc2l0aW9uOiB3aWR0aCAwLjVzIGVhc2UtaW4tb3V0O1xuXHRcdFx0XHR0cmFuc2l0aW9uOiB3aWR0aCAwLjVzIGVhc2UtaW4tb3V0O1xuXG5cdFx0XHRcdEAtd2Via2l0LWtleWZyYW1lcyBwcm9ncmVzcyB7XG5cdFx0XHRcdFx0dG8geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA2MHB4IDA7IH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdEAtbW96LWtleWZyYW1lcyBwcm9ncmVzcyB7XG5cdFx0XHRcdCAgdG8geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA2MHB4IDA7IH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdEBrZXlmcmFtZXMgcHJvZ3Jlc3Mge1xuXHRcdFx0XHQgIHRvIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogNjBweCAwOyB9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0XHRjb250ZW50OiAnJztcblx0XHRcdFx0XHRkaXNwbGF5OmJsb2NrO1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdFx0bGVmdDogMDtcblx0XHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRcdFx0LXdlYmtpdC1hbmltYXRpb246IHByb2dyZXNzIDFzIGxpbmVhciBpbmZpbml0ZTtcblx0XHRcdFx0XHQtbW96LWFuaW1hdGlvbjogcHJvZ3Jlc3MgMXMgbGluZWFyIGluZmluaXRlO1xuXHRcdFx0XHRcdGFuaW1hdGlvbjogcHJvZ3Jlc3MgMXMgbGluZWFyIGluZmluaXRlO1xuXHRcdFx0XHRcdGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLXNpemU6IDYwcHggNjBweDtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJvdyBsYWJlbCAobGVmdCkuXG5cdC53cGZvcm1zLXNldHRpbmctbGFiZWwge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdHdpZHRoOiAyMDBweDtcblx0XHRwYWRkaW5nOiAwO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI8dGFibGV0XCIpIHtcblx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMTVweDtcblx0XHR9XG5cblx0XHRsYWJlbCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUm93IGZpZWxkIChyaWdodCkuXG5cdC53cGZvcm1zLXNldHRpbmctZmllbGQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbjogMCAwIDAgMjAwcHg7XG5cdFx0bWF4LXdpZHRoOiA4MDBweDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPHRhYmxldFwiKSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0cC5zdWJtaXQge1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAyNXB4IDA7XG5cdH1cblxuXHQvLyBHZW5lcmljIGluZm8vY29kZSBpbmZvcm1hdGlvbi5cblx0LmluZm8tYXJlYSxcblx0LnByZS1lcnJvciB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiAxMDAwcHg7XG5cdFx0aGVpZ2h0OiA0NTBweDtcblx0XHRmb250LWZhbWlseTogTWVubG8sTW9uYWNvLG1vbm9zcGFjZTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG5cdFx0d2hpdGUtc3BhY2U6IHByZTtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0XHRwYWRkaW5nOiAyMHB4O1xuXHR9XG5cblx0LnByZS1lcnJvciB7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdG1heC1oZWlnaHQ6IDI1MHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDIwcHg7XG5cdH1cblxuXHQvLyBDaGVja2JveCBtdWx0aS1zZWxlY3QgY29sdW1ucy5cblx0LmNoZWNrYm94LW11bHRpc2VsZWN0LWNvbHVtbnMge1xuXHRcdG1heC13aWR0aDogNjAwcHg7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRjb250ZW50OiBcIi5cIjtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0aGVpZ2h0OiAwO1xuXHRcdFx0bGluZS1oZWlnaHQ6IDA7XG5cdFx0XHRmb250LXNpemU6IDA7XG5cdFx0XHRjbGVhcjogYm90aDtcblx0XHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0XHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0fVxuXG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0Y29udGVudDogXCJcXGYwZWNcIjtcblx0XHRcdGNvbG9yOiAjOTk5O1xuXHRcdFx0Zm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgMjBweC8xIEZvbnRBd2Vzb21lO1xuXHRcdFx0dGV4dC1yZW5kZXJpbmc6IGF1dG87XG5cdFx0XHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0XHRcdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDEzMHB4O1xuXHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0bWFyZ2luOiAwIDAgMCAtMTBweDtcblx0XHR9XG5cblx0XHQuaGVhZGVyIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwIDAgNXB4IDA7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0fVxuXG5cdFx0LmZpcnN0LWNvbHVtbixcblx0XHQuc2Vjb25kLWNvbHVtbiB7XG5cdFx0XHR3aWR0aDogNDUlO1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0fVxuXG5cdFx0LmZpcnN0LWNvbHVtbiB7XG5cblx0XHR9XG5cblx0XHQuc2Vjb25kLWNvbHVtbiB7XG5cdFx0XHRmbG9hdDogcmlnaHQ7XG5cblx0XHRcdHVsIHtcblx0XHRcdFx0bGkge1xuXHRcdFx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR1bCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2RkZDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdGhlaWdodDogMjUwcHg7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuXHRcdFx0bGkge1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggI2VlZSBzb2xpZDtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRmb250LXNpemU6IDE0cHg7XG5cblx0XHRcdFx0bGFiZWwge1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdHBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDMycHg7XG5cdFx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHRcdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcblxuXHRcdFx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG9yYW5nZTtcblx0XHRcdFx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwiXFxmMGM4XCI7XG5cdFx0XHRcdFx0XHRjb2xvcjogI2RkZDtcblx0XHRcdFx0XHRcdGZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIDE2cHgvMSBGb250QXdlc29tZTtcblx0XHRcdFx0XHRcdHRleHQtcmVuZGVyaW5nOiBhdXRvO1xuXHRcdFx0XHRcdFx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdFx0XHRcdFx0XHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXHRcdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRcdFx0dG9wOiAxMnB4O1xuXHRcdFx0XHRcdFx0bGVmdDogMTBweDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQmLmNoZWNrZWQge1xuXHRcdFx0XHRcdFx0b3BhY2l0eTogMC42O1xuXG5cdFx0XHRcdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwiXFxmMTRhXCI7XG5cdFx0XHRcdFx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aW5wdXQge1xuXHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQuYWxsIHtcblx0XHRcdGNvbG9yOiAjOTk5O1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0bWFyZ2luOiAxMHB4IDAgMDtcblx0XHR9XG5cdH1cblxuXHQvLyBPdGhlciBJbXBvcnRlcnMuIChUb29scylcblx0I3dwZm9ybXMtaW1wb3J0ZXItYW5hbHl6ZSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdC5wcm9jZXNzLWNvdW50LFxuXHRcdHAge1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdH1cblxuXHRcdC51cGdyYWRlIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cblx0XHRcdGg1IHtcblx0XHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0XHRtYXJnaW46IDMwcHggMCAyMHB4IDA7XG5cdFx0XHR9XG5cblx0XHRcdGhyIHtcblx0XHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U0ZTRlNDtcblx0XHRcdFx0bWFyZ2luOiA0MHB4IDA7XG5cdFx0XHR9XG5cblx0XHRcdC53cGZvcm1zLWJ0biB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcblx0XHRcdH1cblxuXHRcdFx0dWwge1xuXHRcdFx0XHRsaSB7XG5cdFx0XHRcdFx0bGlzdC1zdHlsZS10eXBlOiBkaXNjO1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAxNHB4O1xuXG5cdFx0XHRcdFx0Ji5mb3JtIHtcblx0XHRcdFx0XHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQjd3Bmb3Jtcy1pbXBvcnRlci1wcm9jZXNzIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXG5cdFx0LnByb2Nlc3MtY291bnQsXG5cdFx0LnByb2Nlc3MtY29tcGxldGVkIHtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHR9XG5cblx0XHQucHJvY2Vzcy1jb21wbGV0ZWQge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQuc3RhdHVzIHtcblx0XHRcdG1hcmdpbjogMjBweCAwIDMwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2RkZDtcblx0XHRcdG1heC1oZWlnaHQ6IDgwMHB4O1xuXHRcdFx0b3ZlcmZsb3cteTogc2Nyb2xsO1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdFx0Lml0ZW0td3JhcCB7XG5cblx0XHRcdH1cblxuXHRcdFx0Lml0ZW0ge1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcblx0XHRcdFx0cGFkZGluZzogMjBweDtcblxuXHRcdFx0XHQmOmxhc3Qtb2YtdHlwZSB7XG5cdFx0XHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0XHRcdG1hcmdpbjogMTJweCAwIDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR1bCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0XHRcdG1hcmdpbjogMTJweCAwIDAgMTZweDtcblxuXHRcdFx0XHRcdGxpIHtcblx0XHRcdFx0XHRcdGxpc3Qtc3R5bGU6IGRpc2M7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0LnN0YXR1cy1pY29uIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdFx0bWFyZ2luOiAwIDEwcHggMCAwO1xuXG5cdFx0XHRcdFx0Ji5mYS1pbmZvLWNpcmNsZSB7XG5cdFx0XHRcdFx0XHRjb2xvcjogIzAwYTBkMlxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYuZmEtY2hlY2sge1xuXHRcdFx0XHRcdFx0Y29sb3I6ICM0NmI0NTBcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQmLmZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlIHtcblx0XHRcdFx0XHRcdGNvbG9yOiAjZmZiOTAwXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ji5mYS10aW1lcyxcblx0XHRcdFx0XHQmLmZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB7XG5cdFx0XHRcdFx0XHRjb2xvcjogcmVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC5uYW1lIHtcblx0XHRcdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQuYWN0aW9ucyB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0XHRcdGZsb2F0OiByaWdodDtcblxuXHRcdFx0XHRcdC5zZXAge1xuXHRcdFx0XHRcdFx0Y29sb3I6ICNkZGQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gTGl0ZSB1cGdyYWRlLlxuXHQuc2V0dGluZ3MtbGl0ZS1jdGF7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGFkYWRhO1xuXHRcdHBhZGRpbmc6IDI1cHggMjBweDtcblx0XHRtYXJnaW46IDEwcHggMCAwIDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0LmRpc21pc3Mge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAxMHB4O1xuXHRcdFx0cmlnaHQ6IDEwcHg7XG5cdFx0XHRjb2xvcjogIzY2Njtcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHR9XG5cblx0XHRoNSB7XG5cdFx0XHRtYXJnaW46IDAgMCAxNnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHR9XG5cblx0XHRoNiB7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0bWFyZ2luOiAwIDAgMTZweDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdGNvbG9yOiAjNTU1O1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0bWFyZ2luOiAwIDAgMTZweDtcblxuXHRcdFx0JjpsYXN0LW9mLXR5cGUge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR9XG5cblx0XHRcdGEge1xuXHRcdFx0XHRjb2xvcjogJG9yYW5nZTtcblxuXHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRjb2xvcjogJGRhcmtvcmFuZ2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR1bCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0d2lkdGg6IDUwJTtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYShcIjw9cGhvbmVcIikge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdGxpIHtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRwYWRkaW5nOiAwIDAgMnB4IDE2cHg7XG5cdFx0XHRcdGNvbG9yOiAjNTU1O1xuXHRcdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdFx0Y29udGVudDogJysnO1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHR0b3A6IC0xcHg7XG5cdFx0XHRcdFx0bGVmdDogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5saXN0IHtcblx0XHRcdG1hcmdpbjogMCAwIDE2cHggMDtcblx0XHRcdG92ZXJmbG93OiBhdXRvO1xuXHRcdFx0bWF4LXdpZHRoOiA5MDBweDtcblx0XHR9XG5cblx0XHQuZ3JlZW4ge1xuXHRcdFx0Y29sb3I6ICMyMTg5MDA7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdH1cblxuXHRcdC5mYS1zdGFyIHtcblx0XHRcdGNvbG9yOiAjZmY5ODJkO1xuXHRcdH1cblx0fVxufVxuIiwiLy8gSW50ZWdyYXRpb25zIHRhYiBjb250ZW50LlxuLy8gTGVnYWN5IENTUyBhbmQgc2hvdWxkIGJlIGNsZWFuZWQgdXAgd2hlbiB0aW1lIHBlcm1pdHMuXG4jd3Bmb3Jtcy1zZXR0aW5ncy1wcm92aWRlcnMge1xuXG5cdC53cGZvcm1zLXNldHRpbmdzLXByb3ZpZGVyIHtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcblx0XHRwYWRkaW5nOiAzMHB4IDA7XG5cblx0XHQmLmZvY3VzLW91dCB7XG5cdFx0XHRvcGFjaXR5OiAwLjQ7XG5cdFx0fVxuXHR9XG5cblx0LndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItaGVhZGVyIHtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0bWF4LXdpZHRoOiAxMDAwcHg7XG5cdH1cblxuXHQud3Bmb3Jtcy1zZXR0aW5ncy1wcm92aWRlci1sb2dvIHtcblx0XHRmbG9hdDogbGVmdDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHQuZmEge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHRtYXJnaW46IC05cHggMCAwIDA7XG5cdFx0XHRsZWZ0OiAxMHB4O1xuXHRcdFx0Y29sb3I6ICM2NjY7XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0fVxuXG5cdFx0aW1nIHtcblx0XHRcdGJhY2tncm91bmQ6ICNmZmY7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdFx0bWF4LXdpZHRoOiA5MHB4O1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW46IDAgMCAwIDQwcHg7XG5cdFx0fVxuXHR9XG5cblx0LndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItaW5mbyB7XG5cdFx0bWFyZ2luOiAwIDAgMCAxNjBweDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0cGFkZGluZzogMjBweCAwIDA7XG5cblx0XHRoMyB7XG5cdFx0XHRtYXJnaW46IDAgMCAxMHB4IDA7XG5cdFx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdH1cblxuXHRcdC5jb25uZWN0ZWQtaW5kaWNhdG9yIHtcblx0XHRcdGNvbG9yOiAjODNjMTFmO1xuXHRcdFx0d2lkdGg6IDEzNXB4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgIzgzYzExZjtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDRweDtcblx0XHRcdHBhZGRpbmc6IDhweCAxNHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAyOHB4O1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5jb25uZWN0ZWQgLndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItaW5mbyAuY29ubmVjdGVkLWluZGljYXRvciB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQud3Bmb3Jtcy1zZXR0aW5ncy1wcm92aWRlci1hY2NvdW50cyB7XG5cdFx0bWFyZ2luOiAwIDAgMCAxNjBweDtcblx0XHRkaXNwbGF5OiBub25lO1xuXHRcdG1heC13aWR0aDogODQwcHg7XG5cdH1cblxuXHQuZm9jdXMtaW4gLndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItYWNjb3VudHMge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0LndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItYWNjb3VudHMtbGlzdCB1bCB7XG5cdFx0cGFkZGluZzogMDtcblx0XHRtYXJnaW46IDA7XG5cblx0XHRsaSB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDEwcHggMDtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblxuXHRcdFx0JjpmaXJzdC1vZi10eXBlIHtcblx0XHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG5cdFx0XHR9XG5cblx0XHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRzcGFuLmxhYmVsIHtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0d2lkdGg6IDUwJTtcblx0XHR9XG5cblx0XHRzcGFuLmRhdGUge1xuXHRcdFx0Y29sb3I6ICM5OTk7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdHdpZHRoOiAzNSU7XG5cdFx0fVxuXG5cdFx0c3Bhbi5yZW1vdmUge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0d2lkdGg6IDE1JTtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0XG5cdFx0fVxuXHR9XG5cblx0LndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItYWNjb3VudHMtY29ubmVjdCB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0XHRwYWRkaW5nOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEJsdWU7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGJsdWU7XG5cblx0XHRpbnB1dFt0eXBlPXRleHRdIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdGNvbG9yOiAjMzMzO1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRwYWRkaW5nOiA3cHggMTJweDtcblx0XHRcdG1hcmdpbjogNXB4IDA7XG5cdFx0XHR3aWR0aDogNDAwcHg7XG5cdFx0XHRtaW4taGVpZ2h0OiAzNXB4O1xuXG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjYmJiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5mb2N1cy1pbiAud3Bmb3Jtcy1zZXR0aW5ncy1wcm92aWRlci1hY2NvdW50cy1jb25uZWN0ICB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQud3Bmb3Jtcy1zZXR0aW5ncy1wcm92aWRlci1hY2NvdW50cy1jb25uZWN0IC5mYSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC53cGZvcm1zLXNldHRpbmdzLXByb3ZpZGVyLWFjY291bnRzLWNvbm5lY3QgcCxcblx0LndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItYWNjb3VudHMgcCB7XG5cdFx0bWFyZ2luOiAwIDAgMTVweCAwO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0fVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBR0FBOztpQ0FFaUM7QUFxQmpDLEFBQUEsUUFBUSxDQUFjO0VBQ3BCLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLGFBQWEsRUFqQkssSUFBSTtFQWtCdEIsU0FBUyxFQXJCWSxJQUFJO0NBZ0MxQjs7QUFkRCxBQUlFLFFBSk0sQUFJTCxNQUFNLENBQUM7RUFBRSxPQUFPLEVBQUUsSUFBSTtDQUFJOztBQUo3QixBQUtFLFFBTE0sQUFLTCxXQUFXLENBQUM7RUFBRSxhQUFhLEVBQUUsQ0FBQztDQUFJOztBQUxyQyxBQU9DLFFBUE8sQUFNTCxZQUFZLENBQ2QsZUFBZSxFQVBoQixRQUFRLEFBTUwsWUFBWSxDQUNHLGVBQWUsQ0FBMkI7RUFDekQsZ0JBQWdCLEVBbkJTLE9BQU87RUFvQmhDLE1BQU0sRUFBRSxXQUFXO0VBQ25CLFdBQVcsRUFBRSxJQUFJO0NBQ2xCOztBQVhGLEFBWUMsUUFaTyxBQU1MLFlBQVksQ0FNZCxjQUFjLENBQWM7RUFBRSxNQUFNLEVBQUUsV0FBVztDQUFJOztBQUl0RCxBQUFBLFFBQVEsQ0FBQSxBQUFBLFNBQUMsRUFBVyxZQUFZLEFBQXZCLEVBQXNDO0VBQzdDLE1BQU0sRUFBRSxPQUFPO0NBeURoQjs7QUExREQsQUFHRSxRQUhNLENBQUEsQUFBQSxTQUFDLEVBQVcsWUFBWSxBQUF2QixFQUdQLGVBQWUsQ0FBYztFQUFFLGNBQWMsRUFBRSxLQUFLO0NBQUk7O0FBSDFELEFBSUUsUUFKTSxDQUFBLEFBQUEsU0FBQyxFQUFXLFlBQVksQUFBdkIsRUFJUCxlQUFlLENBQWM7RUFDOUIsT0FBTyxFQUFFLEtBQUs7RUFDZCxLQUFLLEVBQUUsZUFBZTtFQUN0QixPQUFPLEVBQUUsZUFBZTtFQUN4QixhQUFhLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FoQ0QsT0FBTyxDQWdDa0IsVUFBVTtFQUMxRCxnQkFBZ0IsRUFBRSxPQUFPO0VBQ3pCLE1BQU0sRUFBRSxZQUFZO0NBQ2xCOztBQVhILEFBWUUsUUFaTSxDQUFBLEFBQUEsU0FBQyxFQUFXLFlBQVksQUFBdkIsRUFZUCxnQkFBZ0IsQ0FBYztFQUMvQixnQkFBZ0IsRUFBRSxrQ0FBcUQ7RUFDdkUsT0FBTyxFQUFFLENBQUM7RUFDVixlQUFlLEVBQUUsR0FBRztFQUNwQixNQUFNLEVBQUUsSUFBSTtFQUNaLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLEdBQUcsRUFBRSxHQUFHO0VBQ1IsS0FBSyxFQUFFLENBQUM7RUFDUixVQUFVLEVBQUUsS0FBSztFQUNqQixZQUFZLEVBQUUsSUFBSTtFQUNsQixNQUFNLEVBQUUsSUFBSTtFQUNaLEtBQUssRUFBRSxJQUFJO0VBQ1gsYUFBYSxFQUFFLElBQUk7RUFDbkIsT0FBTyxFQUFFLEVBQUU7Q0FHVDs7QUE1QkgsQUEwQkMsUUExQk8sQ0FBQSxBQUFBLFNBQUMsRUFBVyxZQUFZLEFBQXZCLEVBWVAsZ0JBQWdCLEFBY2hCLE1BQU0sRUExQlIsUUFBUSxDQUFBLEFBQUEsU0FBQyxFQUFXLFlBQVksQUFBdkIsRUFZUCxnQkFBZ0IsQUFjUCxNQUFNLENBQUM7RUFBRSxPQUFPLEVBQUUsQ0FBQztDQUFJOztBQTFCbEMsQUEyQkMsUUEzQk8sQ0FBQSxBQUFBLFNBQUMsRUFBVyxZQUFZLEFBQXZCLEVBWVAsZ0JBQWdCLEFBZWhCLE1BQU0sQ0FBQztFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENGL0QvQixPQUFPO0NFK0RxRDs7QUEzQm5FLEFBNkJFLFFBN0JNLENBQUEsQUFBQSxTQUFDLEVBQVcsWUFBWSxBQUF2QixDQTZCTixNQUFNLENBQUM7RUFDVCxPQUFPLEVBQUUsRUFBRTtFQUNYLE1BQU0sRUFBRSxDQUFDO0VBQ1QsS0FBSyxFQUFFLENBQUM7RUFDUixZQUFZLEVBQUUsS0FBSztFQUNuQixZQUFZLEVBM0RRLE9BQU8sQ0EyRE8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXO0VBQ3JFLFlBQVksRUFBRSxHQUFHO0VBQ2pCLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLEtBQUssRUFBRSxNQUFNO0VBQ2IsR0FBRyxFQUFFLEdBQUc7RUFDUixVQUFVLEVBQUUsTUFBTTtFQUNsQixjQUFjLEVBQUUsSUFBSTtDQUNsQjs7QUF6Q0gsQUEwQ0UsUUExQ00sQ0FBQSxBQUFBLFNBQUMsRUFBVyxZQUFZLEFBQXZCLENBMENOLFFBQVEsQUFBQSxNQUFNLENBQUM7RUFDakIsWUFBWSxFQUFFLFdBQVcsQ0FBQyxXQUFXLENBcEVqQixPQUFPLENBb0UrQixXQUFXO0VBQ3JFLFVBQVUsRUFBRSxNQUFNO0NBQ2hCOztBQTdDSCxBQStDQyxRQS9DTyxDQUFBLEFBQUEsU0FBQyxFQUFXLFlBQVksQUFBdkIsRUE4Q04sQUFBQSxHQUFDLENBQUksS0FBSyxBQUFULENBQ0YsTUFBTSxDQUFDO0VBQ04sSUFBSSxFQUFFLE1BQU07RUFDWixLQUFLLEVBQUUsSUFBSTtDQUNaOztBQWxERixBQW1EQyxRQW5ETyxDQUFBLEFBQUEsU0FBQyxFQUFXLFlBQVksQUFBdkIsRUE4Q04sQUFBQSxHQUFDLENBQUksS0FBSyxBQUFULEVBS0gsZ0JBQWdCLENBQWM7RUFDNUIsS0FBSyxFQUFFLElBQUk7RUFDWCxJQUFJLEVBQUUsQ0FBQztFQUNQLFdBQVcsRUFBRSxJQUFJO0VBQ2pCLFlBQVksRUFBRSxDQUFDO0NBQ2hCOztBQUlGLEFBQ0MsUUFETyxDQUFBLEFBQUEsU0FBQyxFQUFXLGlCQUFpQixBQUE1QixDQUNQLE1BQU0sQ0FBQztFQUNOLE9BQU8sRUFBRSxFQUFFO0VBQ1gsTUFBTSxFQUFFLENBQUM7RUFDVCxLQUFLLEVBQUUsQ0FBQztFQUNSLFlBQVksRUFBRSxLQUFLO0VBQ25CLFlBQVksRUEzRk0sT0FBTyxDQTJGUyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVc7RUFDckUsWUFBWSxFQUFFLEdBQUc7RUFDakIsUUFBUSxFQUFFLFFBQVE7RUFDbEIsS0FBSyxFQUFFLE1BQU07RUFFZCxHQUFHLEVBQUUsSUFBSTtFQUNSLFVBQVUsRUFBRSxNQUFNO0VBQ2xCLGNBQWMsRUFBRSxJQUFJO0NBQ3JCOztBQWRGLEFBZUMsUUFmTyxDQUFBLEFBQUEsU0FBQyxFQUFXLGlCQUFpQixBQUE1QixDQWVQLFFBQVEsQUFBQSxNQUFNLENBQUM7RUFDZCxZQUFZLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FyR25CLE9BQU8sQ0FxR2lDLFdBQVc7RUFDckUsVUFBVSxFQUFFLE1BQU07Q0FDbkI7O0FBR0YsQUFDRSxRQURNLENBQUEsQUFBQSxTQUFDLEVBQVcsaUJBQWlCLEFBQTVCLEVBQ1AsZUFBZSxFQUR1QixRQUFRLENBQUEsQUFBQSxTQUFDLEVBQVcsTUFBTSxBQUFqQixFQUMvQyxlQUFlLENBQWM7RUFBRSxNQUFNLEVBQUUsSUFBSTtDQUFJOztBQURqRCxBQUVFLFFBRk0sQ0FBQSxBQUFBLFNBQUMsRUFBVyxpQkFBaUIsQUFBNUIsRUFFUCxnQkFBZ0IsRUFGc0IsUUFBUSxDQUFBLEFBQUEsU0FBQyxFQUFXLE1BQU0sQUFBakIsRUFFL0MsZ0JBQWdCLENBQWM7RUFDL0IsUUFBUSxFQUFFLFFBQVE7RUFDbEIsT0FBTyxFQUFFLFlBQVk7RUFDckIsVUFBVSxFQUFFLENBQUM7RUFDYixZQUFZLEVBQUUsSUFBeUI7RUFDdkMsYUFBYSxFQUFFLENBQUM7RUFDaEIsV0FBVyxFQTNHWSxHQUFHO0VBNEcxQixZQUFZLEVBQUUsSUFBd0I7RUFDdEMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBbUM7RUFDMUQsZ0JBQWdCLEVBQUUsMEJBQTZDO0VBQy9ELGVBQWUsRUFoSFcsR0FBRztFQWlIN0IsS0FBSyxFQWpIcUIsR0FBRztFQWtIN0IsV0FBVyxFQUFFLENBQUM7RUFDZCxPQUFPLEVBQUUsR0FBRztDQUVWOztBQWpCSCxBQWdCQyxRQWhCTyxDQUFBLEFBQUEsU0FBQyxFQUFXLGlCQUFpQixBQUE1QixFQUVQLGdCQUFnQixBQWNoQixNQUFNLEVBaEJSLFFBQVEsQ0FBQSxBQUFBLFNBQUMsRUFBVyxpQkFBaUIsQUFBNUIsRUFFUCxnQkFBZ0IsQUFjUCxNQUFNLEVBaEJ1QixRQUFRLENBQUEsQUFBQSxTQUFDLEVBQVcsTUFBTSxBQUFqQixFQUUvQyxnQkFBZ0IsQUFjaEIsTUFBTSxFQWhCZ0MsUUFBUSxDQUFBLEFBQUEsU0FBQyxFQUFXLE1BQU0sQUFBakIsRUFFL0MsZ0JBQWdCLEFBY1AsTUFBTSxDQUFDO0VBQUUsT0FBTyxFQUFFLENBQUM7Q0FBSTs7QUFJbEMsQUFBQSxlQUFlLENBQWM7RUFDM0IsT0FBTyxFQUFFLFlBQVk7RUFDckIsY0FBYyxFQUFFLEdBQUc7RUFDbkIsS0FBSyxFQUFFLElBQUk7RUFDWCxnQkFBZ0IsRUFySUMsSUFBSTtFQXVJckIsT0FBTyxFQUFFLGFBQWE7RUFDdEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBcElLLE9BQU87RUFxSTdCLGFBQWEsRUEzSVMsR0FBRztFQTRJekIsU0FBUyxFQS9JWSxJQUFJO0VBZ0p6QixVQUFVLEVBQUUsSUFBSTtFQUNoQixRQUFRLEVBQUUsTUFBTTtDQUlqQjs7QUFIQyxBQUFBLFdBQVcsQ0FaYixlQUFlLEVBWUUsUUFBUSxDQVp6QixlQUFlLENBWWE7RUFBRSxZQUFZLEVBQUUsT0FBbUM7Q0FBSTs7QUFDakYsQUFBQSxRQUFRLENBYlYsZUFBZSxDQWFGO0VBQUUsYUFBYSxFQWhKSixHQUFHLENBQUgsR0FBRyxDQWdKaUQsQ0FBQyxDQUFDLENBQUM7Q0FBSTs7QUFDakYsQUFBQSxXQUFXLEFBQUEsUUFBUSxDQWRyQixlQUFlLENBY1M7RUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FqSnBCLEdBQUcsQ0FBSCxHQUFHO0NBaUptRTs7QUFHOUYsQUFBQSxjQUFjLENBQWM7RUFDMUIsTUFBTSxFQUFFLENBQUM7RUFDVCxZQUFZLEVBQUUsQ0FBQztFQUNmLFVBQVUsRUFBRSxJQUFJO0NBQ2pCOztBQUVELEFBQUEsc0JBQXNCLENBQWM7RUFDbEMsT0FBTyxFQUFFLFlBQVk7RUFDckIsT0FBTyxFQUFFLGdCQUFnQjtFQUN6QixLQUFLLEVBQUUsSUFBSTtDQU1aOztDQUxDLEFBQUEsQUFBQSxHQUFDLENBQUksS0FBSyxBQUFULEVBSkgsc0JBQXNCLENBSU47RUFDZixhQUFhLEVBQUUsR0FBRztFQUNsQixZQUFZLEVBQUUsSUFBSTtDQUNoQjs7QUFQSCxBQVFFLHNCQVJvQixDQVFwQixjQUFjLENBQWM7RUFBRSxLQUFLLEVBQUUsSUFBSTtDQUFJOztBQUcvQyxBQUFBLHdCQUF3QixDQUFjO0VBQ3BDLE9BQU8sRUFBRSxNQUFNO0NBNkJoQjs7QUE5QkQsQUFFRSx3QkFGc0IsQ0FFdEIsY0FBYyxDQUFjO0VBQzdCLE9BQU8sRUFBRSxZQUFZO0VBQ3JCLGNBQWMsRUFBRSxNQUFNO0VBQ3RCLGFBQWEsRUF6S2UsR0FBRztFQTBLL0IsT0FBTyxFQUFFLFFBQVE7RUFDakIsU0FBUyxFQTlLYSxJQUFJO0VBK0sxQixXQUFXLEVBQUUsR0FBRztFQUNoQixZQUFZLEVBQUUsR0FBRztFQUNqQixVQUFVLEVBQUUsR0FBRztFQUNmLGFBQWEsRUFBRSxHQUFHO0VBQ2xCLGdCQUFnQixFRnZMVixPQUFPO0VFd0xiLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQWtDO0VBQ3BELEtBQUssRUFBRSxPQUFPO0VBQ2QsVUFBVSxFQUFFLFNBQVM7Q0FjbkI7O0FBN0JILEFBZ0JDLHdCQWhCdUIsQ0FFdEIsY0FBYyxDQWNkLEFBQUEsY0FBQyxBQUFBLEVBQWdCO0VBQUUsYUFBYSxFQUFFLEdBQUc7Q0FBSTs7Q0FDMUMsQUFBQSxBQUFBLEdBQUMsQ0FBSSxLQUFLLEFBQVQsRUFqQkYsd0JBQXdCLENBRXRCLGNBQWMsQ0FlRDtFQUNaLFlBQVksRUFBRSxDQUFDO0VBQ2YsV0FBVyxFQUFFLE1BQU07Q0FDcEI7O0FBcEJGLEFBcUJDLHdCQXJCdUIsQ0FFdEIsY0FBYyxBQW1CZCxlQUFlLENBQUM7RUFDZixnQkFBZ0IsRUFBRSxPQUFrQztFQUNwRCxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFtQztDQUN0RDs7QUFDRCxBQUFBLFlBQVksQ0F6QmIsd0JBQXdCLENBRXRCLGNBQWMsQ0F1QkE7RUFDYixnQkFBZ0IsRUFBRSxPQUFvQztFQUN0RCxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFvQztDQUN2RDs7QUFJRixBQUFBLHdCQUF3QixDQUFjO0VBQ3BDLE9BQU8sRUFBRSxJQUFJO0VBQ2IsT0FBTyxFQUFFLENBQUM7RUFDVixRQUFRLEVBQUUsUUFBUTtFQUNsQixLQUFLLEVBQUUsSUFBSTtFQUNYLGdCQUFnQixFQXRNVSxPQUFPO0VBdU1qQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FyTUssT0FBTztFQXNNN0IsR0FBRyxFQUFFLElBQUk7RUFDVCxVQUFVLEVBQUUsSUFBSTtFQUNoQix5QkFBeUIsRUE5TUgsR0FBRztFQStNekIsMEJBQTBCLEVBL01KLEdBQUc7RUFnTnpCLFFBQVEsRUFBRSxNQUFNO0VBQ2hCLFVBQVUsRUFBRSxTQUFTO0NBa0R0Qjs7QUE5REQsQUFhRSx3QkFic0IsQUFhckIsVUFBVSxDQUFDO0VBQUUsT0FBTyxFQUFFLEtBQUs7Q0FBSTs7QUFDaEMsQUFBQSxRQUFRLENBZFYsd0JBQXdCLENBY1g7RUFBRSxZQUFZLEVBQUUsT0FBbUM7Q0FBSTs7QUFDbEUsQUFBQSxXQUFXLENBZmIsd0JBQXdCLENBZVI7RUFDZixHQUFHLEVBQUUsSUFBSTtFQUNULE1BQU0sRUFBRSxJQUFJO0VBQ1osVUFBVSxFQUFFLENBQUM7RUFDYixhQUFhLEVBQUUsSUFBSTtFQUNuQixhQUFhLEVBQUUsaUJBQWlCO0NBQzlCOztBQXJCSCxBQXNCRSx3QkF0QnNCLENBc0J0QixjQUFjLENBQWM7RUFDN0IsUUFBUSxFQUFFLFFBQVE7RUFDbEIsVUFBVSxFQUFFLEtBQUs7RUFDakIsUUFBUSxFQUFFLElBQUk7RUFDZCwwQkFBMEIsRUFBRSxLQUFLO0VBQ2pDLFdBQVcsRUFBRSxlQUFlO0NBQzFCOztBQTVCSCxBQTZCRSx3QkE3QnNCLENBNkJ0QixjQUFjLENBQWM7RUFDN0IsUUFBUSxFQUFFLFFBQVE7RUFDbEIsT0FBTyxFQUFFLElBQUk7RUFDYixTQUFTLEVBeE9hLElBQUk7Q0EwT3hCOztDQURGLEFBQUEsQUFBQSxHQUFDLENBQUksS0FBSyxBQUFULEVBakNGLHdCQUF3QixDQTZCdEIsY0FBYyxDQUlEO0VBQUUsVUFBVSxFQUFFLEtBQUs7Q0FBSTs7QUFHckMsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLO0VBcEN6QixBQW1DRSx3QkFuQ3NCLENBbUN0QiwwQkFBMEIsQ0FBYztJQUV2QyxhQUFhLEVBQUUsS0FBSztHQXdCcEI7RUE3REgsQUFzQ0csd0JBdENxQixDQW1DdEIsMEJBQTBCLEFBR3hCLE1BQU0sQ0FBQztJQUNULE9BQU8sRUFBRSxzQkFBc0I7SUFDL0IsU0FBUyxFQS9PWSxJQUFJO0lBZ1B6QixPQUFPLEVBQUUsQ0FBQztJQUNWLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLEtBQUssRUFBRSxJQUFJO0lBQ1gsR0FBRyxFQUFFLEdBQUc7SUFDUixTQUFTLEVBQUUsZ0JBQWdCO0dBQ3pCO0dBQ0QsQUFBQSxBQUFBLEdBQUMsQ0FBSSxLQUFLLEFBQVQsRUEvQ0osd0JBQXdCLENBbUN0QiwwQkFBMEIsQ0FZWDtJQUNmLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFlBQVksRUFBRSxLQUFLO0lBQ25CLGFBQWEsRUFBRSxJQUFJO0dBS2pCO0dBUkQsQUFBQSxBQUlELEdBSkUsQ0FBSSxLQUFLLEFBQVQsRUEvQ0osd0JBQXdCLENBbUN0QiwwQkFBMEIsQUFnQnpCLE1BQU0sQ0FBQztJQUNOLEtBQUssRUFBRSxJQUFJO0lBQ1gsSUFBSSxFQUFFLElBQUk7R0FDWDs7O0FBdERILEFBeURDLHdCQXpEdUIsQ0FtQ3RCLDBCQUEwQixBQXNCMUIsZUFBZSxDQUFDO0VBQ2YsZ0JBQWdCLEVBQUUsT0FBeUI7Q0FFNUM7O0FBNURGLEFBMkRHLHdCQTNEcUIsQ0FtQ3RCLDBCQUEwQixBQXNCMUIsZUFBZSxBQUViLE1BQU0sQ0FBQztFQUFFLE9BQU8sRUFBRSxFQUFFO0NBQUk7O0FBSzVCLEFBQUEsY0FBYyxDQUFjO0VBQUUsTUFBTSxFQUFFLE9BQU87Q0FBSTs7QUFDakQsQUFBQSwwQkFBMEIsQ0FBYztFQUFFLE1BQU0sRUFBRSxPQUFPO0NBQUk7O0FBQzdELEFBQUEsd0JBQXdCLENBQWM7RUFDcEMsTUFBTSxFQUFFLFdBQVc7RUFDbkIsV0FBVyxFQUFFLElBQUk7RUFDakIsT0FBTyxFQUFFLEVBQUU7Q0FDWjs7QUFFRCxBQUFBLGlCQUFpQixDQUFjO0VBQzdCLFdBQVcsRUFBRSxHQUFHO0VBQ2hCLFNBQVMsRUFqUlksSUFBSTtFQWtSekIsT0FBTyxFQUFFLElBQUk7RUFDYixhQUFhLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFvQztFQUM3RCxLQUFLLEVBQUUsSUFBa0I7Q0FDMUI7O0FBRUQsQUFBQSxnQkFBZ0IsQ0FBYztFQUM1QixXQUFXLEVBQUUsT0FBTztFQUNwQixrQkFBa0IsRUFBRSxJQUFJO0VBQ3hCLFVBQVUsRUFBRSxJQUFJO0VBQ2hCLE1BQU0sRUFBRSxDQUFDO0VBQ1QsZ0JBQWdCLEVBQUUsV0FBVztFQUM3QixpQkFBaUIsRUFBRSxTQUFTO0VBQzVCLG1CQUFtQixFQUFFLE1BQU07RUFDM0IsTUFBTSxFQUFFLE9BQU87Q0FFaEI7O0FBVkQsQUFTRSxnQkFUYyxBQVNiLE1BQU0sQ0FBQztFQUFFLE9BQU8sRUFBRSxJQUFJO0NBQUk7O0FBRzdCLEFBQUEsZUFBZSxDQUFjO0VBQzNCLE9BQU8sRUFBRSxZQUFZO0VBQ3JCLGNBQWMsRUFBRSxtQkFBbUI7RUFDbkMsZ0JBQWdCLEVBQUUsT0FBMkI7RUFDN0MsU0FBUyxFQXhTWSxJQUFJO0VBeVN6QixNQUFNLEVBQUUsWUFBWTtFQUNwQixNQUFNLEVBQUUsWUFBWTtFQUNwQixhQUFhLEVBQUUsWUFBWTtFQUMzQixTQUFTLEVBQUUsSUFBSTtFQUNmLFVBQVUsRUFBRSxZQUFZO0VBQ3hCLEtBQUssRUFBRSxlQUFlO0VBQ3RCLE9BQU8sRUFBRSx3QkFBd0I7Q0FNbEM7O0FBakJELEFBWUUsZUFaYSxBQVlaLE1BQU0sQ0FBQztFQUFFLE9BQU8sRUFBRSxDQUFDO0NBQUk7O0NBQ3hCLEFBQUEsQUFBQSxHQUFDLENBQUksS0FBSyxBQUFULEVBYkgsZUFBZSxDQWFDO0VBQ2YsYUFBYSxFQUFFLEdBQUc7RUFDbEIsWUFBWSxFQUFFLENBQUM7Q0FDYjs7QUFHSCxBQUFBLHFCQUFxQixDQUFjO0VBQUUsT0FBTyxFQUFFLEVBQUU7Q0FBSTs7QUFFcEQsaUNBQWlDO0FDOVRqQyxBQUVDLG1CQUZrQixDQUVsQixZQUFZLENBQUM7RUFDWixNQUFNLEVBQUUsQ0FBQztFQUNULGFBQWEsRUFBRSxHQUFHO0VBQ2xCLE1BQU0sRUFBRSxPQUFPO0VBQ2YsT0FBTyxFQUFFLFlBQVk7RUFDckIsTUFBTSxFQUFFLENBQUM7RUFDVCxlQUFlLEVBQUUsSUFBSTtFQUNyQixVQUFVLEVBQUUsTUFBTTtFQUNsQixjQUFjLEVBQUUsTUFBTTtFQUN0QixXQUFXLEVBQUUsTUFBTTtFQUNuQixVQUFVLEVBQUUsSUFBSTtDQUNoQjs7QUFiRixBQWVDLG1CQWZrQixDQWVsQixrQkFBa0IsQ0FBQztFQUNsQixPQUFPLEVBQUUsS0FBSztFQUNkLEtBQUssRUFBRSxJQUFJO0NBQ1g7O0FBbEJGLEFBb0JDLG1CQXBCa0IsQ0FvQmxCLGVBQWUsQ0FBQztFQUNmLFNBQVMsRUFBRSxJQUFJO0VBQ2YsV0FBVyxFQUFFLEdBQUc7RUFDaEIsT0FBTyxFQUFFLFFBQVE7RUFDakIsVUFBVSxFQUFFLElBQUk7Q0FDaEI7O0FBekJGLEFBMkJDLG1CQTNCa0IsQ0EyQmxCLGVBQWUsQ0FBQztFQUNmLFNBQVMsRUFBRSxJQUFJO0VBQ2YsV0FBVyxFQUFFLEdBQUc7RUFDaEIsT0FBTyxFQUFFLFNBQVM7Q0FDbEI7O0FBL0JGLEFBaUNDLG1CQWpDa0IsQ0FpQ2xCLG1CQUFtQixDQUFDO0VBQ25CLGdCQUFnQixFSG5DVCxPQUFPO0VHb0NkLFlBQVksRUhwQ0wsT0FBTztFR3FDZCxLQUFLLEVBQUUsSUFBSTtDQU1YOztBQTFDRixBQXNDRSxtQkF0Q2lCLENBaUNsQixtQkFBbUIsQUFLakIsTUFBTSxDQUFDO0VBQ1AsZ0JBQWdCLEVIdkNOLE9BQU87RUd3Q2pCLFlBQVksRUh4Q0YsT0FBTztDR3lDakI7O0FBekNILEFBNENDLG1CQTVDa0IsQ0E0Q2xCLGlCQUFpQixDQUFDO0VBQ2pCLGdCQUFnQixFQUFFLElBQUk7RUFDdEIsWUFBWSxFQUFFLElBQUk7RUFDbEIsS0FBSyxFQUFFLElBQUk7Q0FPWDs7QUF0REYsQUFpREUsbUJBakRpQixDQTRDbEIsaUJBQWlCLEFBS2YsTUFBTSxDQUFDO0VBQ1AsZ0JBQWdCLEVBQUUsT0FBTztFQUN6QixZQUFZLEVBQUUsSUFBSTtFQUNsQixLQUFLLEVBQUUsSUFBSTtDQUNYOztBQXJESCxBQXdEQyxtQkF4RGtCLENBd0RsQix1QkFBdUIsQ0FBQztFQUN2QixnQkFBZ0IsRUFBRSxPQUFPO0VBQ3pCLE1BQU0sRUFBRSxjQUFjO0VBQ3RCLEtBQUssRUFBRSxJQUFJO0NBTVg7O0FBakVGLEFBNkRFLG1CQTdEaUIsQ0F3RGxCLHVCQUF1QixBQUtyQixNQUFNLENBQUM7RUFDUCxnQkFBZ0IsRUFBRSxJQUFJO0VBQ3RCLEtBQUssRUFBRSxJQUFJO0NBQ1g7O0FBaEVILEFBbUVDLG1CQW5Fa0IsQ0FtRWxCLHdCQUF3QixDQUFDO0VBQ3hCLGdCQUFnQixFQUFFLElBQUk7RUFDdEIsS0FBSyxFSHBFQyxPQUFPO0NHMkZiOztBQTVGRixBQXVFRSxtQkF2RWlCLENBbUVsQix3QkFBd0IsQUFJdEIsTUFBTSxDQUFDO0VBQ1AsZ0JBQWdCLEVIdkVYLE9BQU87RUd3RVosS0FBSyxFQUFFLElBQUk7Q0FDWDs7QUExRUgsQUE0RUUsbUJBNUVpQixDQW1FbEIsd0JBQXdCLENBU3ZCLFVBQVUsQ0FBQztFQUNWLFFBQVEsRUFBRSxRQUFRO0NBVWxCOztBQXZGSCxBQStFRyxtQkEvRWdCLENBbUVsQix3QkFBd0IsQ0FTdkIsVUFBVSxBQUdSLE1BQU0sQ0FBQztFQUNQLE9BQU8sRUFBRSxHQUFHO0VBQ1osYUFBYSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENIaEZyQixPQUFPO0VHaUZYLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLE1BQU0sRUFBRSxJQUFJO0VBQ1osSUFBSSxFQUFFLENBQUM7RUFDUCxLQUFLLEVBQUUsSUFBSTtDQUNYOztBQXRGSixBQXlGRSxtQkF6RmlCLENBbUVsQix3QkFBd0IsQ0FzQnZCLFVBQVUsQ0FBQztFQUNWLE1BQU0sRUFBRSxJQUFJO0NBQ1o7O0FDMUZILEFBSUUsSUFKRSxDQUVILEdBQUcsQUFBQSxTQUFTLENBRVgsQ0FBQztBQUpILElBQUksQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQUdYLENBQUMsQUFBQSxRQUFRO0FBTFgsSUFBSSxDQUVILEdBQUcsQUFBQSxTQUFTLENBSVgsQ0FBQyxBQUFBLE9BQU8sQ0FBQztFQUNSLGtCQUFrQixFQUFFLFVBQVU7RUFDOUIsZUFBZSxFQUFFLFVBQVU7RUFDM0IsVUFBVSxFQUFFLFVBQVU7Q0FDdEI7O0FBVkgsQUFjRyxJQWRDLENBRUgsR0FBRyxBQUFBLFNBQVMsQ0FVWCxHQUFHLEFBQUEsdUJBQXVCLENBRXpCLEdBQUcsQUFBQSxhQUFhLENBQUM7RUFDaEIsYUFBYSxFQUFFLENBQUM7RUFDaEIsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtDQVd4Qzs7QUEzQkosQUFrQkksSUFsQkEsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQVVYLEdBQUcsQUFBQSx1QkFBdUIsQ0FFekIsR0FBRyxBQUFBLGFBQWEsQ0FJZixHQUFHLEFBQUEsbUJBQW1CLENBQUM7RUFDdEIsS0FBSyxFQUFFLGtCQUFlO0VBQ3RCLEdBQUcsRUFBRSxHQUFHO0VBQ1IsS0FBSyxFQUFFLEdBQUc7Q0FLVjs7QUExQkwsQUF1QkssSUF2QkQsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQVVYLEdBQUcsQUFBQSx1QkFBdUIsQ0FFekIsR0FBRyxBQUFBLGFBQWEsQ0FJZixHQUFHLEFBQUEsbUJBQW1CLEFBS3BCLE1BQU0sQ0FBQztFQUNQLEtBQUssRUFBRSxrQkFBZ0I7Q0FDdkI7O0FBekJOLEFBZ0NHLElBaENDLENBRUgsR0FBRyxBQUFBLFNBQVMsQ0E0QlgsR0FBRyxBQUFBLGFBQWEsQ0FFZixHQUFHLEFBQUEsaUJBQWlCLENBQUM7RUFDcEIsTUFBTSxFQUFFLHFCQUFxQjtFQUM3QixPQUFPLEVBQUUsWUFBWTtDQWVyQjs7QUFqREosQUFvQ0ksSUFwQ0EsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQTRCWCxHQUFHLEFBQUEsYUFBYSxDQUVmLEdBQUcsQUFBQSxpQkFBaUIsQ0FJbkIsSUFBSSxBQUFBLGdCQUFnQixDQUFDO0VBQ3BCLE1BQU0sRUFBRSxZQUFZO0VBQ3BCLEtBQUssRUFBRSxrQkFBa0I7Q0FDekI7O0FBdkNMLEFBeUNJLElBekNBLENBRUgsR0FBRyxBQUFBLFNBQVMsQ0E0QlgsR0FBRyxBQUFBLGFBQWEsQ0FFZixHQUFHLEFBQUEsaUJBQWlCLENBU25CLElBQUksQUFBQSxlQUFlLENBQUM7RUFDbkIsT0FBTyxFQUFFLEtBQUs7RUFDZCxLQUFLLEVBQUUsSUFBSTtDQUNYOztBQTVDTCxBQThDSSxJQTlDQSxDQUVILEdBQUcsQUFBQSxTQUFTLENBNEJYLEdBQUcsQUFBQSxhQUFhLENBRWYsR0FBRyxBQUFBLGlCQUFpQixDQWNuQixJQUFJLEFBQUEsZ0JBQWdCLEdBQUcsSUFBSSxBQUFBLGVBQWUsQ0FBQztFQUMxQyxVQUFVLEVBQUUsZUFBZTtDQUMzQjs7QUFoREwsQUFtREcsSUFuREMsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQTRCWCxHQUFHLEFBQUEsYUFBYSxDQXFCZixHQUFHLEFBQUEsc0JBQXNCLENBQUM7RUFDekIsYUFBYSxFQUFFLElBQUk7RUFDbkIsT0FBTyxFQUFFLEtBQUs7Q0FLZDs7QUExREosQUF1REksSUF2REEsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQTRCWCxHQUFHLEFBQUEsYUFBYSxDQXFCZixHQUFHLEFBQUEsc0JBQXNCLENBSXhCLGlCQUFpQixDQUFDO0VBQ2pCLFFBQVEsRUFBRSxPQUFPO0NBQ2pCOztBQXpETCxBQTRERyxJQTVEQyxDQUVILEdBQUcsQUFBQSxTQUFTLENBNEJYLEdBQUcsQUFBQSxhQUFhLENBOEJmLEdBQUcsQUFBQSxpQkFBaUIsQ0FBQztFQUNwQixTQUFTLEVBQUUsSUFBSTtFQUNmLEtBQUssRUFBRSxJQUFJO0VBQ1gsV0FBVyxFQUFFLEdBQUc7Q0FvQ2hCOztBQW5HSixBQWtFSyxJQWxFRCxDQUVILEdBQUcsQUFBQSxTQUFTLENBNEJYLEdBQUcsQUFBQSxhQUFhLENBOEJmLEdBQUcsQUFBQSxpQkFBaUIsQUFLbEIsYUFBYSxDQUNiLENBQUMsQ0FBQztFQUNELFNBQVMsRUFBRSxJQUFJO0VBQ2YsT0FBTyxFQUFFLE1BQU07Q0FDZjs7QUFyRU4sQUF3RUksSUF4RUEsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQTRCWCxHQUFHLEFBQUEsYUFBYSxDQThCZixHQUFHLEFBQUEsaUJBQWlCLENBWW5CLENBQUMsQ0FBQztFQUNELE1BQU0sRUFBRSxRQUFRO0VBQ2hCLFNBQVMsRUFBRSxJQUFJO0VBQ2YsV0FBVyxFQUFFLEdBQUc7Q0FhaEI7O0FBeEZMLEFBNkVLLElBN0VELENBRUgsR0FBRyxBQUFBLFNBQVMsQ0E0QlgsR0FBRyxBQUFBLGFBQWEsQ0E4QmYsR0FBRyxBQUFBLGlCQUFpQixDQVluQixDQUFDLEFBS0MsYUFBYSxDQUFDO0VBQ2QsTUFBTSxFQUFFLENBQUM7Q0FDVDs7QUEvRU4sQUFpRkssSUFqRkQsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQTRCWCxHQUFHLEFBQUEsYUFBYSxDQThCZixHQUFHLEFBQUEsaUJBQWlCLENBWW5CLENBQUMsQUFTQyxNQUFNLENBQUM7RUFDUCxTQUFTLEVBQUUsSUFBSTtDQUNmOztBQW5GTixBQXFGSyxJQXJGRCxDQUVILEdBQUcsQUFBQSxTQUFTLENBNEJYLEdBQUcsQUFBQSxhQUFhLENBOEJmLEdBQUcsQUFBQSxpQkFBaUIsQ0FZbkIsQ0FBQyxBQWFDLE1BQU0sQ0FBQztFQUNQLFNBQVMsRUFBRSxJQUFJO0NBQ2Y7O0FBdkZOLEFBMEZJLElBMUZBLENBRUgsR0FBRyxBQUFBLFNBQVMsQ0E0QlgsR0FBRyxBQUFBLGFBQWEsQ0E4QmYsR0FBRyxBQUFBLGlCQUFpQixDQThCbkIsa0JBQWtCLENBQUM7RUFDbEIsU0FBUyxFQUFFLElBQUk7RUFDZixLQUFLLEVBQUUsSUFBSTtFQUNYLGVBQWUsRUFBRSxJQUFJO0NBS3JCOztBQWxHTCxBQStGSyxJQS9GRCxDQUVILEdBQUcsQUFBQSxTQUFTLENBNEJYLEdBQUcsQUFBQSxhQUFhLENBOEJmLEdBQUcsQUFBQSxpQkFBaUIsQ0E4Qm5CLGtCQUFrQixBQUtoQixNQUFNLENBQUM7RUFDUCxlQUFlLEVBQUUsU0FBUztDQUMxQjs7QUFqR04sQUF1R0ksSUF2R0EsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQTRCWCxHQUFHLEFBQUEsYUFBYSxDQXVFZixHQUFHLEFBQUEsaUJBQWlCLENBRW5CLGtCQUFrQixDQUFDO0VBQ2xCLE9BQU8sRUFBRSxLQUFLO0VBQ2QsU0FBUyxFQUFFLElBQUk7RUFDZixLQUFLLEVBQUUsSUFBSTtFQUNYLGVBQWUsRUFBRSxJQUFJO0VBQ3JCLFdBQVcsRUFBRSxJQUFJO0NBTWpCOztBQWxITCxBQThHSyxJQTlHRCxDQUVILEdBQUcsQUFBQSxTQUFTLENBNEJYLEdBQUcsQUFBQSxhQUFhLENBdUVmLEdBQUcsQUFBQSxpQkFBaUIsQ0FFbkIsa0JBQWtCLEFBT2hCLE1BQU0sQ0FBQztFQUNQLEtBQUssRUFBRSxJQUFJO0VBQ1gsZUFBZSxFQUFFLFNBQVM7Q0FDMUI7O0FBakhOLEFBcUhHLElBckhDLENBRUgsR0FBRyxBQUFBLFNBQVMsQ0E0QlgsR0FBRyxBQUFBLGFBQWEsQ0F1RmYsY0FBYyxDQUFDO0VBQ2QsVUFBVSxFQUFFLE1BQU07RUFDbEIsTUFBTSxFQUFFLFFBQVE7Q0F1Q2hCOztBQTlKSixBQXlISSxJQXpIQSxDQUVILEdBQUcsQUFBQSxTQUFTLENBNEJYLEdBQUcsQUFBQSxhQUFhLENBdUZmLGNBQWMsQ0FJYixDQUFDLENBQUM7RUFDRCxnQkFBZ0IsRUFBRSxPQUFPO0VBQ3pCLE1BQU0sRUFBRSxPQUFPO0VBQ2YsT0FBTyxFQUFFLGNBQWM7RUFDdkIsU0FBUyxFQUFFLElBQUk7RUFDZixLQUFLLEVBQUUsT0FBTztFQUNkLFFBQVEsRUFBRSxRQUFRO0NBbUJsQjs7QUFsSkwsQUFpSUssSUFqSUQsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQTRCWCxHQUFHLEFBQUEsYUFBYSxDQXVGZixjQUFjLENBSWIsQ0FBQyxBQVFDLE1BQU0sQ0FBQztFQUNQLE9BQU8sRUFBRSxPQUFPO0VBQ2hCLE9BQU8sRUFBRSxZQUFZO0VBQ3JCLElBQUksRUFBRSx1Q0FBdUM7RUFDN0MsZ0JBQWdCLEVBQUUsSUFBSTtFQUN0QixTQUFTLEVBQUUsSUFBSTtFQUNmLGFBQWEsRUFBRSxHQUFHO0VBQ2xCLE9BQU8sRUFBRSxPQUFPO0VBQ2hCLGNBQWMsRUFBRSxJQUFJO0VBQ3BCLHNCQUFzQixFQUFFLFdBQVc7RUFDbkMsdUJBQXVCLEVBQUUsU0FBUztFQUNsQyxRQUFRLEVBQUUsUUFBUTtFQUNsQixHQUFHLEVBQUUsS0FBSztFQUNWLEtBQUssRUFBRSxHQUFHO0VBQ1YsWUFBWSxFQUFFLEtBQUs7RUFDbkIsS0FBSyxFQUFFLE9BQU87Q0FDZDs7QUFqSk4sQUFvSkksSUFwSkEsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQTRCWCxHQUFHLEFBQUEsYUFBYSxDQXVGZixjQUFjLENBK0JiLElBQUksQ0FBQztFQUNKLFdBQVcsRUFBRSxHQUFHO0VBQ2hCLEtBQUssRUFBRSxPQUFPO0NBQ2Q7O0FBdkpMLEFBeUpJLElBekpBLENBRUgsR0FBRyxBQUFBLFNBQVMsQ0E0QlgsR0FBRyxBQUFBLGFBQWEsQ0F1RmYsY0FBYyxDQW9DYixDQUFDLENBQUM7RUFDRCxLQUFLLEVBQUUsSUFBSTtFQUNYLE9BQU8sRUFBRSxLQUFLO0VBQ2QsVUFBVSxFQUFFLElBQUk7Q0FDaEI7O0FBN0pMLEFBZ0tHLElBaEtDLENBRUgsR0FBRyxBQUFBLFNBQVMsQ0E0QlgsR0FBRyxBQUFBLGFBQWEsQ0FrSWYsS0FBSyxDQUFBLEFBQUEsSUFBQyxDQUFELElBQUMsQUFBQSxFQUFXO0VBQ2hCLE9BQU8sRUFBRSxLQUFLO0VBQ2QsS0FBSyxFQUFFLEdBQUc7RUFDVixNQUFNLEVBQUUsaUJBQWlCO0VBQ3pCLE9BQU8sRUFBRSxJQUFJO0VBQ2IsVUFBVSxFQUFFLElBQUk7RUFDaEIsTUFBTSxFQUFFLGdCQUFnQjtDQUN4Qjs7QUF2S0osQUF5S0csSUF6S0MsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQTRCWCxHQUFHLEFBQUEsYUFBYSxDQTJJZix3QkFBd0IsQ0FBQztFQUN4QixNQUFNLEVBQUUsTUFBTTtFQUNkLFVBQVUsRUFBRSxNQUFNO0VBQ2xCLFNBQVMsRUFBRSxJQUFJO0VBQ2YsT0FBTyxFQUFFLE9BQU87Q0FDaEI7O0FBOUtKLEFBZ0xHLElBaExDLENBRUgsR0FBRyxBQUFBLFNBQVMsQ0E0QlgsR0FBRyxBQUFBLGFBQWEsQ0FrSmYsd0JBQXdCLEFBQUEsU0FBUyxDQUFDO0VBQ2pDLEtBQUssRUFBRSxJQUFJO0NBQ1g7O0FBbExKLEFBb0xHLElBcExDLENBRUgsR0FBRyxBQUFBLFNBQVMsQ0E0QlgsR0FBRyxBQUFBLGFBQWEsQ0FzSmYsTUFBTSxBQUFBLFlBQVksQ0FBQztFQUNsQixnQkFBZ0IsRUp2TFgsT0FBTztFSXdMWixLQUFLLEVBQUUsSUFBSTtFQUNYLE9BQU8sRUFBRSxJQUFJO0NBTWI7O0FBN0xKLEFBeUxJLElBekxBLENBRUgsR0FBRyxBQUFBLFNBQVMsQ0E0QlgsR0FBRyxBQUFBLGFBQWEsQ0FzSmYsTUFBTSxBQUFBLFlBQVksQUFLaEIsTUFBTSxDQUFDO0VBQ1AsZ0JBQWdCLEVKM0xSLE9BQU87RUk0TGYsWUFBWSxFSjVMSixPQUFPO0NJNkxmOztBQTVMTCxBQStMRyxJQS9MQyxDQUVILEdBQUcsQUFBQSxTQUFTLENBNEJYLEdBQUcsQUFBQSxhQUFhLENBaUtmLE1BQU0sQ0FBQztFQUNOLE9BQU8sRUFBRSxJQUFJO0VBQ2IsS0FBSyxFQUFFLEdBQUc7Q0FDVjs7QUFsTUosQUFvTUcsSUFwTUMsQ0FFSCxHQUFHLEFBQUEsU0FBUyxDQTRCWCxHQUFHLEFBQUEsYUFBYSxDQXNLZixjQUFjLENBQUM7RUFDZCxNQUFNLEVBQUUsNEJBQTRCO0NBQ3BDOztBQXRNSixBQXdNRyxJQXhNQyxDQUVILEdBQUcsQUFBQSxTQUFTLENBNEJYLEdBQUcsQUFBQSxhQUFhLENBMEtmLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDO0VBQ2xDLGtCQUFrQixFQUFFLGVBQWU7RUFDbkMsVUFBVSxFQUFFLGVBQWU7RUFDM0IsaUJBQWlCLEVBQUUsZUFBZTtFQUNsQyxhQUFhLEVBQUUsZUFBZTtFQUM5QixTQUFTLEVBQUUsZUFBZTtFQUMxQixTQUFTLEVBQUUsZUFBZTtDQUMxQjs7QUEvTUosQUFtTkMsSUFuTkcsQ0FtTkgsUUFBUSxDQUFDO0VBQ1IsVUFBVSxFQUFFLElBQUk7Q0FLaEI7O0FBek5GLEFBc05FLElBdE5FLENBbU5ILFFBQVEsQ0FHUCxLQUFLLENBQUEsQUFBQSxJQUFDLENBQUQsSUFBQyxBQUFBLENBQVUsZUFBZSxDQUFDO0VBQy9CLE9BQU8sRUFBRSx1QkFBdUI7Q0FDaEM7O0FDek5ILEFBRUMsbUJBRmtCLENBRWxCLGNBQWMsQ0FBQztFQUNkLE9BQU8sRUFBRSxJQUFJO0VBQ2IsYUFBYSxFQUFFLElBQUk7RUFDbkIsTUFBTSxFQUFFLHFCQUFxQjtDQThDN0I7O0FBbkRGLEFBT0UsbUJBUGlCLENBRWxCLGNBQWMsQ0FLYixFQUFFLENBQUM7RUFDRixVQUFVLEVBQUUsQ0FBQztFQUNiLEtBQUssRUFBRSxPQUFPO0NBQ2Q7O0FBVkgsQUFZRSxtQkFaaUIsQ0FFbEIsY0FBYyxDQVViLENBQUMsQ0FBQztFQUNELE1BQU0sRUFBRSxVQUFVO0NBS2xCOztBQWxCSCxBQWVHLG1CQWZnQixDQUVsQixjQUFjLENBVWIsQ0FBQyxBQUdDLGFBQWEsQ0FBQztFQUNkLE1BQU0sRUFBRSxDQUFDO0NBQ1Q7O0FBakJKLEFBb0JFLG1CQXBCaUIsQ0FFbEIsY0FBYyxBQWtCWix1QkFBdUIsQ0FBQztFQUN4QixNQUFNLEVBQUUsQ0FBQztDQUNUOztBQXRCSCxBQXdCRSxtQkF4QmlCLENBRWxCLGNBQWMsQUFzQlosb0JBQW9CLENBQUM7RUFDckIsU0FBUyxFQUFFLElBQUk7Q0FDZjs7QUExQkgsQUE0QkUsbUJBNUJpQixDQUVsQixjQUFjLEFBMEJaLHNCQUFzQixDQUFDO0VBQ3ZCLGdCQUFnQixFQUFFLE9BQU87RUFDekIsWUFBWSxFQUFFLE9BQU87RUFDckIsS0FBSyxFQUFFLE9BQU87Q0FDZDs7QUFoQ0gsQUFrQ0UsbUJBbENpQixDQUVsQixjQUFjLEFBZ0NaLG1CQUFtQixDQUFDO0VBQ3BCLGdCQUFnQixFQUFFLE9BQU87RUFDekIsWUFBWSxFQUFFLE9BQU87RUFDckIsS0FBSyxFQUFFLE9BQU87Q0FDZDs7QUF0Q0gsQUF3Q0UsbUJBeENpQixDQUVsQixjQUFjLEFBc0NaLHNCQUFzQixDQUFDO0VBQ3ZCLGdCQUFnQixFQUFFLE9BQU87RUFDekIsWUFBWSxFQUFFLE9BQU87RUFDckIsS0FBSyxFQUFFLE9BQU87Q0FDZDs7QUE1Q0gsQUE4Q0UsbUJBOUNpQixDQUVsQixjQUFjLEFBNENaLHFCQUFxQixDQUFDO0VBQ3RCLGdCQUFnQixFQUFFLE9BQU87RUFDekIsWUFBWSxFQUFFLE9BQU87RUFDckIsS0FBSyxFQUFFLE9BQU87Q0FDZDs7QUNsREgsQUFBQSxhQUFhLENBQUM7RUFDYixLQUFLLEVBQUUsSUFBSTtFQUNYLE1BQU0sRUFBRSxJQUFJO0VBQ1osVUFBVSxFQUFDLHdCQUF3QixDQUFDLFNBQVM7RUFDN0MsT0FBTyxFQUFFLFlBQVk7Q0FDckI7O0FBRUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxPQUFPO0NBQUU7O0FBQzdELEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsT0FBTztDQUFFOztBQUM3RCxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLE9BQU87Q0FBRTs7QUFDN0QsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxPQUFPO0NBQUU7O0FBQzdELEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsT0FBTztDQUFFOztBQUM3RCxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLE9BQU87Q0FBRTs7QUFDN0QsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxRQUFRO0NBQUU7O0FBQzlELEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsUUFBUTtDQUFFOztBQUM5RCxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxRQUFRO0NBQUU7O0FBQzlELEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsUUFBUTtDQUFFOztBQUM5RCxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxRQUFRO0NBQUU7O0FBQzlELEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsUUFBUTtDQUFFOztBQUM5RCxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLE9BQU87Q0FBRTs7QUFDN0QsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLE9BQU87Q0FBRTs7QUFDN0QsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLE9BQU87Q0FBRTs7QUFDN0QsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLE9BQU87Q0FBRTs7QUFDN0QsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLE9BQU87Q0FBRTs7QUFDN0QsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLE9BQU87Q0FBRTs7QUFDN0QsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxXQUFXO0NBQUU7O0FBQ2pFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsV0FBVztDQUFFOztBQUNqRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFdBQVc7Q0FBRTs7QUFDakUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFB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 */
3486
  margin-top: 12px;
3487
  }
3488
 
3489
+ .wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-text .wpforms-setting-label, .wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-number .wpforms-setting-label {
3490
  padding-top: 8px;
3491
  }
3492
 
3574
  }
3575
 
3576
  .wpforms-admin-settings .wpforms-setting-row input[type=text],
3577
+ .wpforms-admin-settings .wpforms-setting-row input[type=number],
3578
  .wpforms-admin-settings .wpforms-setting-row input[type=password] {
3579
  background-color: #fff;
3580
  border: 1px solid #ddd;
3591
 
3592
  @media (max-width: 959px) {
3593
  .wpforms-admin-settings .wpforms-setting-row input[type=text],
3594
+ .wpforms-admin-settings .wpforms-setting-row input[type=number],
3595
  .wpforms-admin-settings .wpforms-setting-row input[type=password] {
3596
  width: 300px;
3597
  }
3598
  }
3599
 
3600
  .wpforms-admin-settings .wpforms-setting-row input[type=text]:focus,
3601
+ .wpforms-admin-settings .wpforms-setting-row input[type=number]:focus,
3602
  .wpforms-admin-settings .wpforms-setting-row input[type=password]:focus {
3603
  border-color: #bbb;
3604
  }
3605
 
3606
+ .wpforms-admin-settings .wpforms-setting-row input[type=number] {
3607
+ width: 100px;
3608
+ }
3609
+
3610
  .wpforms-admin-settings .wpforms-setting-row button {
3611
  margin-right: 10px;
3612
  }
4232
  font-size: 14px;
4233
  }
4234
 
4235
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzL2Nzcy9hZG1pbi5jc3MiLCJzb3VyY2VzIjpbImFzc2V0cy9zY3NzL2FkbWluLnNjc3MiLCJhc3NldHMvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCJhc3NldHMvc2Nzcy92ZW5kb3IvcGFydGlhbHMvX2luY2x1ZGUtbWVkaWEuc2NzcyIsImFzc2V0cy9zY3NzL3ZlbmRvci9wYXJ0aWFscy9fY2hvaWNlcy5zY3NzIiwiYXNzZXRzL3Njc3MvYWRtaW4vX2J1dHRvbnMuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19jb25maXJtLnNjc3MiLCJhc3NldHMvc2Nzcy9hZG1pbi9fYWxlcnRzLnNjc3MiLCJhc3NldHMvc2Nzcy9hZG1pbi9fZmxhZ3Muc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19oZWFkZXIuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL190aXRsZS10YWJzLnNjc3MiLCJhc3NldHMvc2Nzcy9hZG1pbi9fZ2VuZXJhbC5zY3NzIiwiYXNzZXRzL3Njc3MvYWRtaW4vX3BhZ2UtZm9ybXMtb3ZlcnZpZXcuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19wYWdlLWVudHJpZXMtc2luZ2xlLnNjc3MiLCJhc3NldHMvc2Nzcy9hZG1pbi9fcGFnZS1lbnRyaWVzLWxpc3Quc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19wYWdlLXdlbGNvbWUuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19wYWdlLWFkZG9ucy5zY3NzIiwiYXNzZXRzL3Njc3MvYWRtaW4vX3BhZ2UtYWJvdXQuc2NzcyIsImFzc2V0cy9zY3NzL2FkbWluL19wYWdlLXNldHRpbmdzLXRvb2xzLnNjc3MiLCJhc3NldHMvc2Nzcy9hZG1pbi9fcGFnZS1zZXR0aW5ncy1pbnRlZ3JhdGlvbnMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXUEZvcm1zIGFkbWluIHN0eWxlcy5cbi8vIFRoZXNlIHN0eWxlcyBhcmUgbG9hZGVkIG9uIGFsbCBXUEZvcm1zIHJlbGF0ZWQgYWRtaW4gcGFnZXMuXG5cbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd2ZW5kb3IvcGFydGlhbHMvaW5jbHVkZS1tZWRpYSc7XG5AaW1wb3J0ICd2ZW5kb3IvcGFydGlhbHMvY2hvaWNlcyc7XG5cbiRicmVha3BvaW50czogKFxuXHQneHMtcGhvbmUnOiAzMjBweCxcblx0J3Bob25lJzogNjAwcHgsXG5cdCdpcGFkJzogNzY4cHgsXG5cdCd0YWJsZXQnOiA3ODJweCxcblx0J2Rlc2t0b3AnOiA5NjBweCxcbik7XG5cbkBpbXBvcnQgJ2FkbWluL2J1dHRvbnMnO1xuQGltcG9ydCAnYWRtaW4vY29uZmlybSc7XG5AaW1wb3J0ICdhZG1pbi9hbGVydHMnO1xuQGltcG9ydCAnYWRtaW4vZmxhZ3MnO1xuQGltcG9ydCAnYWRtaW4vaGVhZGVyJztcbkBpbXBvcnQgJ2FkbWluL3RpdGxlLXRhYnMnO1xuQGltcG9ydCAnYWRtaW4vZ2VuZXJhbCc7XG5AaW1wb3J0ICdhZG1pbi9wYWdlLWZvcm1zLW92ZXJ2aWV3JztcbkBpbXBvcnQgJ2FkbWluL3BhZ2UtZW50cmllcy1zaW5nbGUnO1xuQGltcG9ydCAnYWRtaW4vcGFnZS1lbnRyaWVzLWxpc3QnO1xuQGltcG9ydCAnYWRtaW4vcGFnZS13ZWxjb21lJztcbkBpbXBvcnQgJ2FkbWluL3BhZ2UtYWRkb25zJztcbkBpbXBvcnQgJ2FkbWluL3BhZ2UtYWJvdXQnO1xuQGltcG9ydCAnYWRtaW4vcGFnZS1zZXR0aW5ncy10b29scyc7XG5AaW1wb3J0ICdhZG1pbi9wYWdlLXNldHRpbmdzLWludGVncmF0aW9ucyc7XG4iLCIkb3JhbmdlOiAjZTI3NzMwO1xuJGRhcmtvcmFuZ2U6ICNiODVhMWI7XG4kZ3JlZW46ICMyYTliMzk7XG4kYmx1ZTogIzBlNmNhZDtcbiRsaWdodEJsdWU6ICNlYmYzZmI7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vICAgICBfICAgICAgICAgICAgXyAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gX1xuLy8gICAgKF8pICAgICAgICAgIHwgfCAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IChfKVxuLy8gICAgIF8gXyBfXyAgIF9fX3wgfF8gICBfICBfX3wgfCBfX18gICBfIF9fIF9fXyAgIF9fXyAgX198IHxfICBfXyBfXG4vLyAgICB8IHwgJ18gXFwgLyBfX3wgfCB8IHwgfC8gX2AgfC8gXyBcXCB8ICdfIGAgXyBcXCAvIF8gXFwvIF9gIHwgfC8gX2AgfFxuLy8gICAgfCB8IHwgfCB8IChfX3wgfCB8X3wgfCAoX3wgfCAgX18vIHwgfCB8IHwgfCB8ICBfXy8gKF98IHwgfCAoX3wgfFxuLy8gICAgfF98X3wgfF98XFxfX198X3xcXF9fLF98XFxfXyxffFxcX19ffCB8X3wgfF98IHxffFxcX19ffFxcX18sX3xffFxcX18sX3xcbi8vXG4vLyAgICAgIFNpbXBsZSwgZWxlZ2FudCBhbmQgbWFpbnRhaW5hYmxlIG1lZGlhIHF1ZXJpZXMgaW4gU2Fzc1xuLy8gICAgICAgICAgICAgICAgICAgICAgICB2MS40Ljlcbi8vXG4vLyAgICAgICAgICAgICAgICBodHRwOi8vaW5jbHVkZS1tZWRpYS5jb21cbi8vXG4vLyAgICAgICAgIEF1dGhvcnM6IEVkdWFyZG8gQm91Y2FzIChAZWR1YXJkb2JvdWNhcylcbi8vICAgICAgICAgICAgICAgICAgSHVnbyBHaXJhdWRlbCAoQGh1Z29naXJhdWRlbClcbi8vXG4vLyAgICAgIFRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlXG5cblxuLy8vL1xuLy8vIGluY2x1ZGUtbWVkaWEgbGlicmFyeSBwdWJsaWMgY29uZmlndXJhdGlvblxuLy8vIEBhdXRob3IgRWR1YXJkbyBCb3VjYXNcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vL1xuXG5cbi8vL1xuLy8vIENyZWF0ZXMgYSBsaXN0IG9mIGdsb2JhbCBicmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzaW5nbGUgYnJlYWtwb2ludCB3aXRoIHRoZSBsYWJlbCBgcGhvbmVgXG4vLy8gICRicmVha3BvaW50czogKCdwaG9uZSc6IDMyMHB4KTtcbi8vL1xuJGJyZWFrcG9pbnRzOiAoXG4gICdwaG9uZSc6IDMyMHB4LFxuICAndGFibGV0JzogNzY4cHgsXG4gICdkZXNrdG9wJzogMTAyNHB4XG4pICFkZWZhdWx0O1xuXG5cbi8vL1xuLy8vIENyZWF0ZXMgYSBsaXN0IG9mIHN0YXRpYyBleHByZXNzaW9ucyBvciBtZWRpYSB0eXBlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzaW5nbGUgbWVkaWEgdHlwZSAoc2NyZWVuKVxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJzogJ3NjcmVlbicpO1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzdGF0aWMgZXhwcmVzc2lvbiB3aXRoIGxvZ2ljYWwgZGlzanVuY3Rpb24gKE9SIG9wZXJhdG9yKVxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6IChcbi8vLyAgICAncmV0aW5hMngnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSdcbi8vLyAgKTtcbi8vL1xuJG1lZGlhLWV4cHJlc3Npb25zOiAoXG4gICdzY3JlZW4nOiAnc2NyZWVuJyxcbiAgJ3ByaW50JzogJ3ByaW50JyxcbiAgJ2hhbmRoZWxkJzogJ2hhbmRoZWxkJyxcbiAgJ2xhbmRzY2FwZSc6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAncG9ydHJhaXQnOiAnKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAncmV0aW5hMngnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCknLFxuICAncmV0aW5hM3gnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMyksIChtaW4tcmVzb2x1dGlvbjogMzUwZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAzZHBweCknXG4pICFkZWZhdWx0O1xuXG5cbi8vL1xuLy8vIERlZmluZXMgYSBudW1iZXIgdG8gYmUgYWRkZWQgb3Igc3VidHJhY3RlZCBmcm9tIGVhY2ggdW5pdCB3aGVuIGRlY2xhcmluZyBicmVha3BvaW50cyB3aXRoIGV4Y2x1c2l2ZSBpbnRlcnZhbHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcGl4ZWxzIGlzIGRlZmluZWQgYXMgYDFgIGJ5IGRlZmF1bHRcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4xMjhweCcpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMTI5cHgpIHt9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIGVtcyBpcyBkZWZpbmVkIGFzIGAwLjAxYCBieSBkZWZhdWx0XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+MjBlbScpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMjAuMDFlbSkge31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcmVtcyBpcyBkZWZpbmVkIGFzIGAwLjFgIGJ5IGRlZmF1bHQsIHRvIGJlIHVzZWQgd2l0aCBgZm9udC1zaXplOiA2Mi41JTtgXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+Mi4wcmVtJykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAyLjFyZW0pIHt9XG4vLy9cbiR1bml0LWludGVydmFsczogKFxuICAncHgnOiAxLFxuICAnZW0nOiAwLjAxLFxuICAncmVtJzogMC4xLFxuICAnJzogMFxuKSAhZGVmYXVsdDtcblxuLy8vXG4vLy8gRGVmaW5lcyB3aGV0aGVyIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgYXZhaWxhYmxlLCB1c2VmdWwgZm9yIGNyZWF0aW5nIHNlcGFyYXRlIHN0eWxlc2hlZXRzXG4vLy8gZm9yIGJyb3dzZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBtZWRpYSBxdWVyaWVzLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIERpc2FibGVzIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXNcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgLmZvbyB7XG4vLy8gICAgY29sb3I6IHRvbWF0bztcbi8vLyAgfVxuLy8vXG4kaW0tbWVkaWEtc3VwcG9ydDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vXG4vLy8gU2VsZWN0cyB3aGljaCBicmVha3BvaW50IHRvIGVtdWxhdGUgd2hlbiBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzIGlzIGRpc2FibGVkLiBNZWRpYSBxdWVyaWVzIHRoYXQgc3RhcnQgYXQgb3Jcbi8vLyBpbnRlcmNlcHQgdGhlIGJyZWFrcG9pbnQgd2lsbCBiZSBkaXNwbGF5ZWQsIGFueSBvdGhlcnMgd2lsbCBiZSBpZ25vcmVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgLmZvbyB7XG4vLy8gICAgY29sb3I6IHRvbWF0bztcbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGRvZXMgbm90IGludGVyY2VwdCB0aGUgZGVza3RvcCBicmVha3BvaW50XG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICd0YWJsZXQnO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj1kZXNrdG9wJykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAvKiBObyBvdXRwdXQgKi9cbi8vL1xuJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJyAhZGVmYXVsdDtcblxuLy8vXG4vLy8gU2VsZWN0cyB3aGljaCBtZWRpYSBleHByZXNzaW9ucyBhcmUgYWxsb3dlZCBpbiBhbiBleHByZXNzaW9uIGZvciBpdCB0byBiZSB1c2VkIHdoZW4gbWVkaWEgcXVlcmllc1xuLy8vIGFyZSBub3Qgc3VwcG9ydGVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnQgYW5kIGNvbnRhaW5zIG9ubHkgYWNjZXB0ZWQgbWVkaWEgZXhwcmVzc2lvbnNcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdzY3JlZW4nKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gICAuZm9vIHtcbi8vLyAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgTk9UIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBidXQgY29udGFpbnMgYSBtZWRpYSBleHByZXNzaW9uIHRoYXQgaXMgbm90IGFjY2VwdGVkXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcbi8vLyAgJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbicpO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnLCAncmV0aW5hMngnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xuLy8vXG4kaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJywgJ3BvcnRyYWl0JywgJ2xhbmRzY2FwZScpICFkZWZhdWx0O1xuXG4vLy8vXG4vLy8gQ3Jvc3MtZW5naW5lIGxvZ2dpbmcgZW5naW5lXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gTG9nIGEgbWVzc2FnZSBlaXRoZXIgd2l0aCBgQGVycm9yYCBpZiBzdXBwb3J0ZWRcbi8vLyBlbHNlIHdpdGggYEB3YXJuYCwgdXNpbmcgYGZlYXR1cmUtZXhpc3RzKCdhdC1lcnJvcicpYFxuLy8vIHRvIGRldGVjdCBzdXBwb3J0LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZXNzYWdlIC0gTWVzc2FnZSB0byBsb2dcbi8vL1xuQGZ1bmN0aW9uIGltLWxvZygkbWVzc2FnZSkge1xuICBAaWYgZmVhdHVyZS1leGlzdHMoJ2F0LWVycm9yJykge1xuXHRAZXJyb3IgJG1lc3NhZ2U7XG4gIH0gQGVsc2Uge1xuXHRAd2FybiAkbWVzc2FnZTtcblx0JF86IG5vb3AoKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1lc3NhZ2U7XG59XG5cblxuLy8vXG4vLy8gV3JhcHBlciBtaXhpbiBmb3IgdGhlIGxvZyBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIGEgbW9yZSBmcmllbmRseVxuLy8vIEFQSSB0aGFuIGBAaWYgaW0tbG9nKCcuLicpIHt9YCBvciBgJF86IGltLWxvZygnLi4nKWAuIEJhc2ljYWxseSwgdXNlIHRoZSBmdW5jdGlvblxuLy8vIHdpdGhpbiBmdW5jdGlvbnMgYmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluIGEgZnVuY3Rpb25cbi8vLyBhbmQgdXNlIHRoZSBtaXhpbiBldmVyeXdoZXJlIGVsc2UgYmVjYXVzZSBpdCdzIG11Y2ggbW9yZSBlbGVnYW50LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZXNzYWdlIC0gTWVzc2FnZSB0byBsb2dcbi8vL1xuQG1peGluIGxvZygkbWVzc2FnZSkge1xuICBAaWYgaW0tbG9nKCRtZXNzYWdlKSB7fVxufVxuXG5cbi8vL1xuLy8vIEZ1bmN0aW9uIHdpdGggbm8gYEByZXR1cm5gIGNhbGxlZCBuZXh0IHRvIGBAd2FybmAgaW4gU2FzcyAzLjNcbi8vLyB0byB0cmlnZ2VyIGEgY29tcGlsaW5nIGVycm9yIGFuZCBzdG9wIHRoZSBwcm9jZXNzLlxuLy8vXG5AZnVuY3Rpb24gbm9vcCgpIHt9XG5cbi8vL1xuLy8vIERldGVybWluZXMgd2hldGhlciBhIGxpc3Qgb2YgY29uZGl0aW9ucyBpcyBpbnRlcmNlcHRlZCBieSB0aGUgc3RhdGljIGJyZWFrcG9pbnQuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICAgJGNvbmRpdGlvbnMgIC0gTWVkaWEgcXVlcnkgY29uZGl0aW9uc1xuLy8vXG4vLy8gQHJldHVybiB7Qm9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbmRpdGlvbnMgYXJlIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludFxuLy8vXG5AZnVuY3Rpb24gaW0taW50ZXJjZXB0cy1zdGF0aWMtYnJlYWtwb2ludCgkY29uZGl0aW9ucy4uLikge1xuICAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRpbS1uby1tZWRpYS1icmVha3BvaW50KTtcblxuICBAaWYgbm90ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlIHtcblx0QGlmIGltLWxvZygnYCN7JGltLW5vLW1lZGlhLWJyZWFrcG9pbnR9YCBpcyBub3QgYSB2YWxpZCBicmVha3BvaW50LicpIHt9XG4gIH1cblxuICBAZWFjaCAkY29uZGl0aW9uIGluICRjb25kaXRpb25zIHtcblx0QGlmIG5vdCBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcblx0ICAkb3BlcmF0b3I6IGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRjb25kaXRpb24pO1xuXHQgICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xuXHQgICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGNvbmRpdGlvbiwgJG9wZXJhdG9yKTtcblxuXHQgIEBpZiAoJHByZWZpeCA9PSAnbWF4JyBhbmQgJHZhbHVlIDw9ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSBvclxuXHRcdCAgKCRwcmVmaXggPT0gJ21pbicgYW5kICR2YWx1ZSA+ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSB7XG5cdFx0QHJldHVybiBmYWxzZTtcblx0ICB9XG5cdH0gQGVsc2UgaWYgbm90IGluZGV4KCRpbS1uby1tZWRpYS1leHByZXNzaW9ucywgJGNvbmRpdGlvbikge1xuXHQgIEByZXR1cm4gZmFsc2U7XG5cdH1cbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vL1xuLy8vIFBhcnNpbmcgZW5naW5lXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gR2V0IG9wZXJhdG9yIG9mIGFuIGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBvcGVyYXRvciBmcm9tXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gQW55IG9mIGA+PWAsIGA+YCwgYDw9YCwgYDxgLCBg4omlYCwgYOKJpGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKSB7XG4gIEBlYWNoICRvcGVyYXRvciBpbiAoJz49JywgJz4nLCAnPD0nLCAnPCcsICfiiaUnLCAn4omkJykge1xuXHRAaWYgc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcblx0ICBAcmV0dXJuICRvcGVyYXRvcjtcblx0fVxuICB9XG5cbiAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcbiAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAkXzogaW0tbG9nKCdObyBvcGVyYXRvciBmb3VuZCBpbiBgI3skZXhwcmVzc2lvbn1gLicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCBkaW1lbnNpb24gb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IGRpbWVuc2lvbiBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGB3aWR0aGAgb3IgYGhlaWdodGAgKG9yIHBvdGVudGlhbGx5IGFueXRoaW5nIGVsc2UpXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHBhcnNlZC1kaW1lbnNpb246IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgMCwgJG9wZXJhdG9yLWluZGV4IC0gMSk7XG4gICRkaW1lbnNpb246ICd3aWR0aCc7XG5cbiAgQGlmIHN0ci1sZW5ndGgoJHBhcnNlZC1kaW1lbnNpb24pID4gMCB7XG5cdCRkaW1lbnNpb246ICRwYXJzZWQtZGltZW5zaW9uO1xuICB9XG5cbiAgQHJldHVybiAkZGltZW5zaW9uO1xufVxuXG5cbi8vL1xuLy8vIEdldCBkaW1lbnNpb24gcHJlZml4IGJhc2VkIG9uIGFuIG9wZXJhdG9yXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG9wZXJhdG9yIC0gT3BlcmF0b3Jcbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBgbWluYCBvciBgbWF4YFxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcikge1xuICBAcmV0dXJuIGlmKGluZGV4KCgnPCcsICc8PScsICfiiaQnKSwgJG9wZXJhdG9yKSwgJ21heCcsICdtaW4nKTtcbn1cblxuXG4vLy9cbi8vLyBHZXQgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IHZhbHVlIGZyb21cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG9wZXJhdG9yIC0gT3BlcmF0b3IgZnJvbSBgJGV4cHJlc3Npb25gXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gQSBudW1lcmljIHZhbHVlXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XG4gICRvcGVyYXRvci1pbmRleDogc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xuICAkdmFsdWU6IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yLWluZGV4ICsgc3RyLWxlbmd0aCgkb3BlcmF0b3IpKTtcblxuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIHtcblx0JHZhbHVlOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHZhbHVlKTtcbiAgfSBAZWxzZSB7XG5cdCR2YWx1ZTogdG8tbnVtYmVyKCR2YWx1ZSk7XG4gIH1cblxuICAkaW50ZXJ2YWw6IG1hcC1nZXQoJHVuaXQtaW50ZXJ2YWxzLCB1bml0KCR2YWx1ZSkpO1xuXG4gIEBpZiBub3QgJGludGVydmFsIHtcblx0Ly8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuXHQvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuXHQvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cblx0Ly8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcblx0Ly8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuXHQkXzogaW0tbG9nKCdVbmtub3duIHVuaXQgYCN7dW5pdCgkdmFsdWUpfWAuJyk7XG4gIH1cblxuICBAaWYgJG9wZXJhdG9yID09ICc+JyB7XG5cdCR2YWx1ZTogJHZhbHVlICsgJGludGVydmFsO1xuICB9IEBlbHNlIGlmICRvcGVyYXRvciA9PSAnPCcge1xuXHQkdmFsdWU6ICR2YWx1ZSAtICRpbnRlcnZhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG5cbi8vL1xuLy8vIFBhcnNlIGFuIGV4cHJlc3Npb24gdG8gcmV0dXJuIGEgdmFsaWQgbWVkaWEtcXVlcnkgZXhwcmVzc2lvblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBwYXJzZVxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIFZhbGlkIG1lZGlhIHF1ZXJ5XG4vLy9cbkBmdW5jdGlvbiBwYXJzZS1leHByZXNzaW9uKCRleHByZXNzaW9uKSB7XG4gIC8vIElmIGl0IGlzIHBhcnQgb2YgJG1lZGlhLWV4cHJlc3Npb25zLCBpdCBoYXMgbm8gb3BlcmF0b3JcbiAgLy8gdGhlbiB0aGVyZSBpcyBubyBuZWVkIHRvIGdvIGFueSBmdXJ0aGVyLCBqdXN0IHJldHVybiB0aGUgdmFsdWVcbiAgQGlmIG1hcC1oYXMta2V5KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pIHtcblx0QHJldHVybiBtYXAtZ2V0KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pO1xuICB9XG5cbiAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkZXhwcmVzc2lvbik7XG4gICRkaW1lbnNpb246IGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XG4gICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG5cbiAgQHJldHVybiAnKCN7JHByZWZpeH0tI3skZGltZW5zaW9ufTogI3skdmFsdWV9KSc7XG59XG5cbi8vL1xuLy8vIFNsaWNlIGAkbGlzdGAgYmV0d2VlbiBgJHN0YXJ0YCBhbmQgYCRlbmRgIGluZGV4ZXNcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc2xpY2Vcbi8vLyBAcGFyYW0ge051bWJlcn0gJHN0YXJ0IFsxXSAtIFN0YXJ0IGluZGV4XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbmQgW2xlbmd0aCgkbGlzdCldIC0gRW5kIGluZGV4XG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fSBTbGljZWQgbGlzdFxuLy8vXG5AZnVuY3Rpb24gc2xpY2UoJGxpc3QsICRzdGFydDogMSwgJGVuZDogbGVuZ3RoKCRsaXN0KSkge1xuICBAaWYgbGVuZ3RoKCRsaXN0KSA8IDEgb3IgJHN0YXJ0ID4gJGVuZCB7XG5cdEByZXR1cm4gKCk7XG4gIH1cblxuICAkcmVzdWx0OiAoKTtcblxuICBAZm9yICRpIGZyb20gJHN0YXJ0IHRocm91Z2ggJGVuZCB7XG5cdCRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCBudGgoJGxpc3QsICRpKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbi8vLy9cbi8vLyBTdHJpbmcgdG8gbnVtYmVyIGNvbnZlcnRlclxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vL1xuXG5cbi8vL1xuLy8vIENhc3RzIGEgc3RyaW5nIGludG8gYSBudW1iZXJcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBiZSBwYXJzZWRcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vL1xuQGZ1bmN0aW9uIHRvLW51bWJlcigkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG5cdEByZXR1cm4gJHZhbHVlO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnc3RyaW5nJyB7XG5cdCRfOiBpbS1sb2coJ1ZhbHVlIGZvciBgdG8tbnVtYmVyYCBzaG91bGQgYmUgYSBudW1iZXIgb3IgYSBzdHJpbmcuJyk7XG4gIH1cblxuICAkZmlyc3QtY2hhcmFjdGVyOiBzdHItc2xpY2UoJHZhbHVlLCAxLCAxKTtcbiAgJHJlc3VsdDogMDtcbiAgJGRpZ2l0czogMDtcbiAgJG1pbnVzOiAoJGZpcnN0LWNoYXJhY3RlciA9PSAnLScpO1xuICAkbnVtYmVyczogKCcwJzogMCwgJzEnOiAxLCAnMic6IDIsICczJzogMywgJzQnOiA0LCAnNSc6IDUsICc2JzogNiwgJzcnOiA3LCAnOCc6IDgsICc5JzogOSk7XG5cbiAgLy8gUmVtb3ZlICsvLSBzaWduIGlmIHByZXNlbnQgYXQgZmlyc3QgY2hhcmFjdGVyXG4gIEBpZiAoJGZpcnN0LWNoYXJhY3RlciA9PSAnKycgb3IgJGZpcnN0LWNoYXJhY3RlciA9PSAnLScpIHtcblx0JHZhbHVlOiBzdHItc2xpY2UoJHZhbHVlLCAyKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyLWxlbmd0aCgkdmFsdWUpIHtcblx0JGNoYXJhY3Rlcjogc3RyLXNsaWNlKCR2YWx1ZSwgJGksICRpKTtcblxuXHRAaWYgbm90IChpbmRleChtYXAta2V5cygkbnVtYmVycyksICRjaGFyYWN0ZXIpIG9yICRjaGFyYWN0ZXIgPT0gJy4nKSB7XG5cdCAgQHJldHVybiB0by1sZW5ndGgoaWYoJG1pbnVzLCAtJHJlc3VsdCwgJHJlc3VsdCksIHN0ci1zbGljZSgkdmFsdWUsICRpKSlcblx0fVxuXG5cdEBpZiAkY2hhcmFjdGVyID09ICcuJyB7XG5cdCAgJGRpZ2l0czogMTtcblx0fSBAZWxzZSBpZiAkZGlnaXRzID09IDAge1xuXHQgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMCArIG1hcC1nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpO1xuXHR9IEBlbHNlIHtcblx0ICAkZGlnaXRzOiAkZGlnaXRzICogMTA7XG5cdCAgJHJlc3VsdDogJHJlc3VsdCArIG1hcC1nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpIC8gJGRpZ2l0cztcblx0fVxuICB9XG5cbiAgQHJldHVybiBpZigkbWludXMsIC0kcmVzdWx0LCAkcmVzdWx0KTtcbn1cblxuXG4vLy9cbi8vLyBBZGQgYCR1bml0YCB0byBgJHZhbHVlYFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGFkZCB1bml0IHRvXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR1bml0IC0gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB1bml0XG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gYCR2YWx1ZWAgZXhwcmVzc2VkIGluIGAkdW5pdGBcbi8vL1xuQGZ1bmN0aW9uIHRvLWxlbmd0aCgkdmFsdWUsICR1bml0KSB7XG4gICR1bml0czogKCdweCc6IDFweCwgJ2NtJzogMWNtLCAnbW0nOiAxbW0sICclJzogMSUsICdjaCc6IDFjaCwgJ3BjJzogMXBjLCAnaW4nOiAxaW4sICdlbSc6IDFlbSwgJ3JlbSc6IDFyZW0sICdwdCc6IDFwdCwgJ2V4JzogMWV4LCAndncnOiAxdncsICd2aCc6IDF2aCwgJ3ZtaW4nOiAxdm1pbiwgJ3ZtYXgnOiAxdm1heCk7XG5cbiAgQGlmIG5vdCBpbmRleChtYXAta2V5cygkdW5pdHMpLCAkdW5pdCkge1xuXHQkXzogaW0tbG9nKCdJbnZhbGlkIHVuaXQgYCN7JHVuaXR9YC4nKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlICogbWFwLWdldCgkdW5pdHMsICR1bml0KTtcbn1cblxuLy8vXG4vLy8gVGhpcyBtaXhpbiBhaW1zIGF0IHJlZGVmaW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24ganVzdCBmb3IgdGhlIHNjb3BlIG9mXG4vLy8gdGhlIGNhbGwuIEl0IGlzIGhlbHBmdWwgd2hlbiBoYXZpbmcgYSBjb21wb25lbnQgbmVlZGluZyBhbiBleHRlbmRlZFxuLy8vIGNvbmZpZ3VyYXRpb24gc3VjaCBhcyBjdXN0b20gYnJlYWtwb2ludHMgKHJlZmVycmVkIHRvIGFzIHR3ZWFrcG9pbnRzKVxuLy8vIGZvciBpbnN0YW5jZS5cbi8vL1xuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vha3BvaW50cyBbKCldIC0gTWFwIG9mIHR3ZWFrcG9pbnRzIHRvIGJlIG1lcmdlZCB3aXRoIGAkYnJlYWtwb2ludHNgXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucyBbKCldIC0gTWFwIG9mIHR3ZWFrZWQgbWVkaWEgZXhwcmVzc2lvbnMgdG8gYmUgbWVyZ2VkIHdpdGggYCRtZWRpYS1leHByZXNzaW9uYFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCB0aGUgZ2xvYmFsIGJyZWFrcG9pbnRzIHdpdGggYSB0d2Vha3BvaW50XG4vLy8gIEBpbmNsdWRlIG1lZGlhLWNvbnRleHQoKCdjdXN0b20nOiA2NzhweCkpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgbWVkaWEgZXhwcmVzc2lvbnMgd2l0aCBhIGN1c3RvbSBvbmVcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgnYWxsJzogJ2FsbCcpKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSgnYWxsJywgJz5waG9uZScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgYm90aCBjb25maWd1cmF0aW9uIG1hcHNcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSwgKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJywgJzw9Y3VzdG9tJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG5AbWl4aW4gbWVkaWEtY29udGV4dCgkdHdlYWtwb2ludHM6ICgpLCAkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgpKSB7XG4gIC8vIFNhdmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGdsb2JhbC1icmVha3BvaW50czogJGJyZWFrcG9pbnRzO1xuICAkZ2xvYmFsLW1lZGlhLWV4cHJlc3Npb25zOiAkbWVkaWEtZXhwcmVzc2lvbnM7XG5cbiAgLy8gVXBkYXRlIGdsb2JhbCBjb25maWd1cmF0aW9uXG4gICRicmVha3BvaW50czogbWFwLW1lcmdlKCRicmVha3BvaW50cywgJHR3ZWFrcG9pbnRzKSAhZ2xvYmFsO1xuICAkbWVkaWEtZXhwcmVzc2lvbnM6IG1hcC1tZXJnZSgkbWVkaWEtZXhwcmVzc2lvbnMsICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucykgIWdsb2JhbDtcblxuICBAY29udGVudDtcblxuICAvLyBSZXN0b3JlIGdsb2JhbCBjb25maWd1cmF0aW9uXG4gICRicmVha3BvaW50czogJGdsb2JhbC1icmVha3BvaW50cyAhZ2xvYmFsO1xuICAkbWVkaWEtZXhwcmVzc2lvbnM6ICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnMgIWdsb2JhbDtcbn1cblxuLy8vL1xuLy8vIGluY2x1ZGUtbWVkaWEgcHVibGljIGV4cG9zZWQgQVBJXG4vLy8gQGF1dGhvciBFZHVhcmRvIEJvdWNhc1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8vXG5cblxuLy8vXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgYmFzZWQgb24gYSBsaXN0IG9mIGNvbmRpdGlvbnNcbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHNpbmdsZSBzZXQgYnJlYWtwb2ludFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCB0d28gc2V0IGJyZWFrcG9pbnRzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD10YWJsZXQnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGN1c3RvbSB2YWx1ZXNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49MzU4cHgnLCAnPDg1MHB4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBzZXQgYnJlYWtwb2ludHMgd2l0aCBjdXN0b20gdmFsdWVzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+ZGVza3RvcCcsICc8PTEzNTBweCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzdGF0aWMgZXhwcmVzc2lvblxuLy8vICBAaW5jbHVkZSBtZWRpYSgncmV0aW5hMngnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBNaXhpbmcgZXZlcnl0aGluZ1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNTBweCcsICc8dGFibGV0JywgJ3JldGluYTN4JykgeyB9XG4vLy9cbkBtaXhpbiBtZWRpYSgkY29uZGl0aW9ucy4uLikge1xuICBAaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID09IDApIG9yXG5cdCAgKG5vdCAkaW0tbWVkaWEtc3VwcG9ydCBhbmQgaW0taW50ZXJjZXB0cy1zdGF0aWMtYnJlYWtwb2ludCgkY29uZGl0aW9ucy4uLikpIHtcblx0QGNvbnRlbnQ7XG4gIH0gQGVsc2UgaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID4gMCkge1xuXHRAbWVkaWEgI3t1bnF1b3RlKHBhcnNlLWV4cHJlc3Npb24obnRoKCRjb25kaXRpb25zLCAxKSkpfSB7XG5cdCAgLy8gUmVjdXJzaXZlIGNhbGxcblx0ICBAaW5jbHVkZSBtZWRpYShzbGljZSgkY29uZGl0aW9ucywgMikuLi4pIHtcblx0XHRAY29udGVudDtcblx0ICB9XG5cdH1cbiAgfVxufVxuIiwiLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG49ICAgICAgICAgICAgQ2hvaWNlcyAgICAgICAgICAgID1cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG4kY2hvaWNlcy1zZWxlY3RvcjogJ2Nob2ljZXMnICFkZWZhdWx0O1xuJGNob2ljZXMtZm9udC1zaXplLWxnOiAxNnB4ICFkZWZhdWx0O1xuJGNob2ljZXMtZm9udC1zaXplLW1kOiAxNHB4ICFkZWZhdWx0O1xuJGNob2ljZXMtZm9udC1zaXplLXNtOiAxMnB4ICFkZWZhdWx0O1xuJGNob2ljZXMtZ3V0dGVyaW5nOiAyNHB4ICFkZWZhdWx0O1xuJGNob2ljZXMtYm9yZGVyLXJhZGl1czogM3B4ICFkZWZhdWx0O1xuJGNob2ljZXMtYm9yZGVyLXJhZGl1cy1pdGVtOiAzcHggIWRlZmF1bHQ7XG4kY2hvaWNlcy1iZy1jb2xvcjogI2ZmZiAhZGVmYXVsdDtcbiRjaG9pY2VzLWJnLWNvbG9yLWRpc2FibGVkOiAjRUFFQUVBICFkZWZhdWx0O1xuJGNob2ljZXMtYmctY29sb3ItZHJvcGRvd246ICNGRkZGRkYgIWRlZmF1bHQ7XG4kY2hvaWNlcy10ZXh0LWNvbG9yOiAjMzMzMzMzICFkZWZhdWx0O1xuJGNob2ljZXMta2V5bGluZS1jb2xvcjogI0RERERERCAhZGVmYXVsdDtcbiRjaG9pY2VzLXByaW1hcnktY29sb3I6ICRibHVlICFkZWZhdWx0O1xuJGNob2ljZXMtZGlzYWJsZWQtY29sb3I6ICNlYWVhZWEgIWRlZmF1bHQ7XG4kY2hvaWNlcy1oaWdobGlnaHQtY29sb3I6ICRjaG9pY2VzLXByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG4kY2hvaWNlcy1idXR0b24taWNvbi1wYXRoOiAnLi4vaW1hZ2VzJyAhZGVmYXVsdDtcbiRjaG9pY2VzLWJ1dHRvbi1kaW1lbnNpb246IDhweCAhZGVmYXVsdDtcbiRjaG9pY2VzLWJ1dHRvbi1vZmZzZXQ6IDhweCAhZGVmYXVsdDtcblxuLiN7JGNob2ljZXMtc2VsZWN0b3J9IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAkY2hvaWNlcy1ndXR0ZXJpbmc7XG4gIGZvbnQtc2l6ZTogJGNob2ljZXMtZm9udC1zaXplLWxnO1xuICAmOmZvY3VzIHsgb3V0bGluZTogbm9uZTsgfVxuICAmOmxhc3QtY2hpbGQgeyBtYXJnaW4tYm90dG9tOiAwOyB9XG4gICYuaXMtZGlzYWJsZWQge1xuXHQuI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2lubmVyLCAuI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2lucHV0IHtcblx0ICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2hvaWNlcy1iZy1jb2xvci1kaXNhYmxlZDtcblx0ICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHQgIHVzZXItc2VsZWN0OiBub25lO1xuXHR9XG5cdC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faXRlbSB7IGN1cnNvcjogbm90LWFsbG93ZWQ7IH1cbiAgfVxufVxuXG4uI3skY2hvaWNlcy1zZWxlY3Rvcn1bZGF0YS10eXBlKj1cInNlbGVjdC1vbmVcIl0ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC8vIC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faW5uZXIgeyBwYWRkaW5nLWJvdHRvbTogNy41cHg7IH1cbiAgLiN7JGNob2ljZXMtc2VsZWN0b3J9X19pbm5lciB7IHBhZGRpbmctYm90dG9tOiAzLjBweDsgfVxuICAuI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2lucHV0IHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjaG9pY2VzLWtleWxpbmUtY29sb3IgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcblx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLiN7JGNob2ljZXMtc2VsZWN0b3J9X19idXR0b24ge1xuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJGNob2ljZXMtYnV0dG9uLWljb24tcGF0aCArICcvY3Jvc3MtaW52ZXJzZS5zdmcnKTtcblx0cGFkZGluZzogMDtcblx0YmFja2dyb3VuZC1zaXplOiA4cHg7XG5cdGhlaWdodDogMTAwJTtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDUwJTtcblx0cmlnaHQ6IDA7XG5cdG1hcmdpbi10b3A6IC0xMHB4O1xuXHRtYXJnaW4tcmlnaHQ6IDI1cHg7XG5cdGhlaWdodDogMjBweDtcblx0d2lkdGg6IDIwcHg7XG5cdGJvcmRlci1yYWRpdXM6IDEwZW07XG5cdG9wYWNpdHk6IC41O1xuXHQmOmhvdmVyLCAmOmZvY3VzIHsgb3BhY2l0eTogMTsgfVxuXHQmOmZvY3VzIHsgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMnB4ICRjaG9pY2VzLWhpZ2hsaWdodC1jb2xvcjsgfVxuICB9XG4gICY6YWZ0ZXIge1xuXHRjb250ZW50OiBcIlwiO1xuXHRoZWlnaHQ6IDA7XG5cdHdpZHRoOiAwO1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItY29sb3I6ICRjaG9pY2VzLXRleHQtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci13aWR0aDogNXB4O1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHJpZ2h0OiAxMS41cHg7XG5cdHRvcDogNTAlO1xuXHRtYXJnaW4tdG9wOiAtMi41cHg7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG4gICYuaXMtb3BlbjphZnRlciB7XG5cdGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJGNob2ljZXMtdGV4dC1jb2xvciB0cmFuc3BhcmVudDtcblx0bWFyZ2luLXRvcDogLTcuNXB4O1xuICB9XG4gICZbZGlyPVwicnRsXCJdIHtcblx0JjphZnRlciB7XG5cdCAgbGVmdDogMTEuNXB4O1xuXHQgIHJpZ2h0OiBhdXRvO1xuXHR9XG5cdC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9fYnV0dG9uIHtcblx0ICByaWdodDogYXV0bztcblx0ICBsZWZ0OiAwO1xuXHQgIG1hcmdpbi1sZWZ0OiAyNXB4O1xuXHQgIG1hcmdpbi1yaWdodDogMDtcblx0fVxuICB9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfVtkYXRhLXR5cGUqPVwic2VsZWN0LW11bHRpcGxlXCJde1xuXHQmOmFmdGVyIHtcblx0ICBjb250ZW50OiBcIlwiO1xuXHQgIGhlaWdodDogMDtcblx0ICB3aWR0aDogMDtcblx0ICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXHQgIGJvcmRlci1jb2xvcjogJGNob2ljZXMtdGV4dC1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcblx0ICBib3JkZXItd2lkdGg6IDVweDtcblx0ICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdCAgcmlnaHQ6IDExLjVweDtcblx0Ly8gICB0b3A6IDUwJTtcblx0IHRvcDogMThweDtcblx0ICBtYXJnaW4tdG9wOiAtMi41cHg7XG5cdCAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdH1cblx0Ji5pcy1vcGVuOmFmdGVyIHtcblx0ICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRjaG9pY2VzLXRleHQtY29sb3IgdHJhbnNwYXJlbnQ7XG5cdCAgbWFyZ2luLXRvcDogLTcuNXB4O1xuXHR9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfVtkYXRhLXR5cGUqPVwic2VsZWN0LW11bHRpcGxlXCJdLCAuI3skY2hvaWNlcy1zZWxlY3Rvcn1bZGF0YS10eXBlKj1cInRleHRcIl0gIHtcbiAgLiN7JGNob2ljZXMtc2VsZWN0b3J9X19pbm5lciB7IGN1cnNvcjogdGV4dDsgfVxuICAuI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2J1dHRvbiB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRtYXJnaW4tdG9wOiAwO1xuXHRtYXJnaW4tcmlnaHQ6IC0kY2hvaWNlcy1idXR0b24tb2Zmc2V0LzI7XG5cdG1hcmdpbi1ib3R0b206IDA7XG5cdG1hcmdpbi1sZWZ0OiAkY2hvaWNlcy1idXR0b24tb2Zmc2V0O1xuXHRwYWRkaW5nLWxlZnQ6ICRjaG9pY2VzLWJ1dHRvbi1vZmZzZXQqMjtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBkYXJrZW4oJGNob2ljZXMtcHJpbWFyeS1jb2xvciwgMTAlKTtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRjaG9pY2VzLWJ1dHRvbi1pY29uLXBhdGggKyAnL2Nyb3NzLnN2ZycpO1xuXHRiYWNrZ3JvdW5kLXNpemU6ICRjaG9pY2VzLWJ1dHRvbi1kaW1lbnNpb247XG5cdHdpZHRoOiAkY2hvaWNlcy1idXR0b24tZGltZW5zaW9uO1xuXHRsaW5lLWhlaWdodDogMTtcblx0b3BhY2l0eTogLjc1O1xuXHQmOmhvdmVyLCAmOmZvY3VzIHsgb3BhY2l0eTogMTsgfVxuICB9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faW5uZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2hvaWNlcy1iZy1jb2xvcjtcbiAgLy9wYWRkaW5nOiA3LjVweCA3LjVweCAzLjc1cHg7XG4gIHBhZGRpbmc6IDRweCA3LjVweCAxcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjaG9pY2VzLWtleWxpbmUtY29sb3I7XG4gIGJvcmRlci1yYWRpdXM6ICRjaG9pY2VzLWJvcmRlci1yYWRpdXM7XG4gIGZvbnQtc2l6ZTogJGNob2ljZXMtZm9udC1zaXplLW1kO1xuICBtaW4taGVpZ2h0OiAzNXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAuaXMtZm9jdXNlZCAmLCAuaXMtb3BlbiAmIHsgYm9yZGVyLWNvbG9yOiBkYXJrZW4oJGNob2ljZXMta2V5bGluZS1jb2xvciwgMTUlKTsgfVxuICAuaXMtb3BlbiAmIHsgYm9yZGVyLXJhZGl1czogJGNob2ljZXMtYm9yZGVyLXJhZGl1cyAkY2hvaWNlcy1ib3JkZXItcmFkaXVzIDAgMDsgfVxuICAuaXMtZmxpcHBlZC5pcy1vcGVuICYgeyBib3JkZXItcmFkaXVzOiAwIDAgJGNob2ljZXMtYm9yZGVyLXJhZGl1cyAkY2hvaWNlcy1ib3JkZXItcmFkaXVzOyB9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfV9fbGlzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4uI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2xpc3QtLXNpbmdsZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogNHB4IDE2cHggNHB4IDRweDtcbiAgd2lkdGg6IDEwMCU7XG4gIFtkaXI9XCJydGxcIl0gJiB7XG5cdHBhZGRpbmctcmlnaHQ6IDRweDtcblx0cGFkZGluZy1sZWZ0OiAxNnB4O1xuICB9XG4gIC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faXRlbSB7IHdpZHRoOiAxMDAlOyB9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfV9fbGlzdC0tbXVsdGlwbGUge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faXRlbSB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0Ym9yZGVyLXJhZGl1czogJGNob2ljZXMtYm9yZGVyLXJhZGl1cy1pdGVtO1xuXHRwYWRkaW5nOiAzcHggMTBweDtcblx0Zm9udC1zaXplOiAkY2hvaWNlcy1mb250LXNpemUtc207XG5cdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdG1hcmdpbi1yaWdodDogNHB4O1xuXHRtYXJnaW4tdG9wOiAwcHg7XG5cdG1hcmdpbi1ib3R0b206IDNweDtcblx0YmFja2dyb3VuZC1jb2xvcjogJGNob2ljZXMtcHJpbWFyeS1jb2xvcjtcblx0Ym9yZGVyOiAxcHggc29saWQgZGFya2VuKCRjaG9pY2VzLXByaW1hcnktY29sb3IsIDUlKTtcblx0Y29sb3I6ICNGRkZGRkY7XG5cdHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcblx0JltkYXRhLWRlbGV0YWJsZV0geyBwYWRkaW5nLXJpZ2h0OiA1cHg7IH1cblx0W2Rpcj1cInJ0bFwiXSAmIHtcblx0ICBtYXJnaW4tcmlnaHQ6IDA7XG5cdCAgbWFyZ2luLWxlZnQ6IDMuNzVweDtcblx0fVxuXHQmLmlzLWhpZ2hsaWdodGVkIHtcblx0ICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGNob2ljZXMtcHJpbWFyeS1jb2xvciwgNSUpO1xuXHQgIGJvcmRlcjogMXB4IHNvbGlkIGRhcmtlbigkY2hvaWNlcy1wcmltYXJ5LWNvbG9yLCAxMCUpO1xuXHR9XG5cdC5pcy1kaXNhYmxlZCAmIHtcblx0ICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGNob2ljZXMtZGlzYWJsZWQtY29sb3IsIDI1JSk7XG5cdCAgYm9yZGVyOiAxcHggc29saWQgZGFya2VuKCRjaG9pY2VzLWRpc2FibGVkLWNvbG9yLCAzNSUpO1xuXHR9XG4gIH1cbn1cblxuLiN7JGNob2ljZXMtc2VsZWN0b3J9X19saXN0LS1kcm9wZG93biB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjaG9pY2VzLWJnLWNvbG9yLWRyb3Bkb3duO1xuICBib3JkZXI6IDFweCBzb2xpZCAkY2hvaWNlcy1rZXlsaW5lLWNvbG9yO1xuICB0b3A6IDEwMCU7XG4gIG1hcmdpbi10b3A6IC0xcHg7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRjaG9pY2VzLWJvcmRlci1yYWRpdXM7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkY2hvaWNlcy1ib3JkZXItcmFkaXVzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gICYuaXMtYWN0aXZlIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgLmlzLW9wZW4gJiB7IGJvcmRlci1jb2xvcjogZGFya2VuKCRjaG9pY2VzLWtleWxpbmUtY29sb3IsIDE1JSk7IH1cbiAgLmlzLWZsaXBwZWQgJiB7XG5cdHRvcDogYXV0bztcblx0Ym90dG9tOiAxMDAlO1xuXHRtYXJnaW4tdG9wOiAwO1xuXHRtYXJnaW4tYm90dG9tOiAtMXB4O1xuXHRib3JkZXItcmFkaXVzOiAuMjVyZW0gLjI1cmVtIDAgMDtcbiAgfVxuICAuI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2xpc3Qge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG1heC1oZWlnaHQ6IDMwMHB4O1xuXHRvdmVyZmxvdzogYXV0bztcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXHR3aWxsLWNoYW5nZTogc2Nyb2xsLXBvc2l0aW9uO1xuICB9XG4gIC4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faXRlbSB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0cGFkZGluZzogMTBweDtcblx0Zm9udC1zaXplOiAkY2hvaWNlcy1mb250LXNpemUtbWQ7XG5cdFtkaXI9XCJydGxcIl0gJiB7IHRleHQtYWxpZ246IHJpZ2h0OyB9XG4gIH1cbiAgLiN7JGNob2ljZXMtc2VsZWN0b3J9X19pdGVtLS1zZWxlY3RhYmxlIHtcblx0QG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG5cdCAgcGFkZGluZy1yaWdodDogMTAwcHg7XG5cdCAgJjphZnRlciB7XG5cdFx0Y29udGVudDogYXR0cihkYXRhLXNlbGVjdC10ZXh0KTtcblx0XHRmb250LXNpemU6ICRjaG9pY2VzLWZvbnQtc2l6ZS1zbTtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRyaWdodDogMTBweDtcblx0XHR0b3A6IDUwJTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdCAgfVxuXHQgIFtkaXI9XCJydGxcIl0gJiB7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0cGFkZGluZy1sZWZ0OiAxMDBweDtcblx0XHRwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuXHRcdCY6YWZ0ZXIge1xuXHRcdCAgcmlnaHQ6IGF1dG87XG5cdFx0ICBsZWZ0OiAxMHB4O1xuXHRcdH1cblx0ICB9XG5cdH1cblx0Ji5pcy1oaWdobGlnaHRlZCB7XG5cdCAgYmFja2dyb3VuZC1jb2xvcjogbWl4KCMwMDAwMDAsICNGRkZGRkYsIDUlKTtcblx0ICAmOmFmdGVyIHsgb3BhY2l0eTogLjU7IH1cblx0fVxuICB9XG59XG5cbi4jeyRjaG9pY2VzLXNlbGVjdG9yfV9faXRlbSB7IGN1cnNvcjogZGVmYXVsdDsgfVxuLiN7JGNob2ljZXMtc2VsZWN0b3J9X19pdGVtLS1zZWxlY3RhYmxlIHsgY3Vyc29yOiBwb2ludGVyOyB9XG4uI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2l0ZW0tLWRpc2FibGVkIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIG9wYWNpdHk6IC41O1xufVxuXG4uI3skY2hvaWNlcy1zZWxlY3Rvcn1fX2hlYWRpbmcge1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6ICRjaG9pY2VzLWZvbnQtc2l6ZS1zbTtcbiAgcGFkZGluZzogMTBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGxpZ2h0ZW4oJGNob2ljZXMta2V5bGluZS1jb2xvciwgMTAlKTtcbiAgY29sb3I6IGxpZ2h0ZW4oIzMzMywgMzAlKTtcbn1cblxuLiN7JGNob2ljZXMtc2VsZWN0b3J9X19idXR0b24ge1xuICB0ZXh0LWluZGVudDogLTk5OTlweDtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgJjpmb2N1cyB7IG91dGxpbmU6IG5vbmU7IH1cbn1cblxuLiN7JGNob2ljZXMtc2VsZWN0b3J9X19pbnB1dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IG1peCgjMDAwMDAwLCAjRkZGRkZGLCAyLjUlKTtcbiAgZm9udC1zaXplOiAkY2hvaWNlcy1mb250LXNpemUtbWQ7XG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDtcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgcGFkZGluZzogNHB4IDAgNHB4IDJweCAhaW1wb3J0YW50O1xuICAmOmZvY3VzIHsgb3V0bGluZTogMDsgfVxuICBbZGlyPVwicnRsXCJdICYge1xuXHRwYWRkaW5nLXJpZ2h0OiAycHg7XG5cdHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuXG4uI3skY2hvaWNlcy1zZWxlY3Rvcn1fX3BsYWNlaG9sZGVyIHsgb3BhY2l0eTogLjU7IH1cblxuLyo9PT09PSAgRW5kIG9mIENob2ljZXMgID09PT09PSovXG4iLCIvLyBCdXR0b24gc3R5bGVzLlxuLndwZm9ybXMtYWRtaW4tcGFnZSB7XG5cblx0LndwZm9ybXMtYnRuIHtcblx0XHRib3JkZXI6IDA7XG5cdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdH1cblxuXHQud3Bmb3Jtcy1idG4tYmxvY2sge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cblx0LndwZm9ybXMtYnRuLW1kIHtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRwYWRkaW5nOiA4cHggMTJweDtcblx0XHRtaW4taGVpZ2h0OiAzNXB4O1xuXHR9XG5cblx0LndwZm9ybXMtYnRuLWxnIHtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRwYWRkaW5nOiAxNnB4IDI4cHg7XG5cdH1cblxuXHQud3Bmb3Jtcy1idG4tb3JhbmdlIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkb3JhbmdlO1xuXHRcdGJvcmRlci1jb2xvcjogJG9yYW5nZTtcblx0XHRjb2xvcjogI2ZmZjtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGRhcmtvcmFuZ2U7XG5cdFx0XHRib3JkZXItY29sb3I6ICRkYXJrb3JhbmdlO1xuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLWJ0bi1ncmV5IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xuXHRcdGJvcmRlci1jb2xvcjogI2NjYztcblx0XHRjb2xvcjogIzY2NjtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Q3ZDdkNztcblx0XHRcdGJvcmRlci1jb2xvcjogI2NjYztcblx0XHRcdGNvbG9yOiAjNDQ0O1xuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLWJ0bi1saWdodC1ncmV5IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG5cdFx0Y29sb3I6ICM2NjY7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG5cdFx0XHRjb2xvcjogIzQ0NDtcblx0XHR9XG5cdH1cblxuXHQud3Bmb3Jtcy1idG4tdHJhbnMtZ3JlZW4ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG5vbmU7XG5cdFx0Y29sb3I6ICRncmVlbjtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuO1xuXHRcdFx0Y29sb3I6ICNmZmY7XG5cdFx0fVxuXG5cdFx0LnVuZGVybGluZSB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRjb250ZW50OiBcIiBcIjtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAkZ3JlZW47XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0Ym90dG9tOiAtNXB4O1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZGFzaGljb25zIHtcblx0XHRcdGhlaWdodDogMThweDtcblx0XHR9XG5cdH1cbn1cbiIsIi8vIEFsZXJ0IHN0eWxlcy5cbi8vIFN0eWxpbmcgdHdlYWtzIGZvciBqUXVlcnktY29uZmlybSBKUyBhbGVydCBsaWJyYXJ5LlxuYm9keSB7XG5cblx0ZGl2Lmpjb25maXJtIHtcblxuXHRcdCosXG5cdFx0Kjo6YmVmb3JlLFxuXHRcdCo6OmFmdGVyIHtcblx0XHRcdC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0fVxuXG5cdFx0ZGl2Lmpjb25maXJtLWJveC1jb250YWluZXIge1xuXG5cdFx0XHRkaXYuamNvbmZpcm0tYm94IHtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMDtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAycHggNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcblxuXHRcdFx0XHRkaXYuamNvbmZpcm0tY2xvc2VJY29uIHtcblx0XHRcdFx0XHRjb2xvcjogcmdiYSgwLDAsMCwwLjQpO1xuXHRcdFx0XHRcdHRvcDogOHB4O1xuXHRcdFx0XHRcdHJpZ2h0OiA4cHg7XG5cblx0XHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRcdGNvbG9yOiByZ2JhKDAsMCwwLDAuODApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGRpdi5qY29uZmlybS1ib3gge1xuXG5cdFx0XHRkaXYuamNvbmZpcm0tdGl0bGUtYyB7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDI2cHggMCAhaW1wb3J0YW50O1xuXHRcdFx0XHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cblx0XHRcdFx0c3Bhbi5qY29uZmlybS1pY29uLWMge1xuXHRcdFx0XHRcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xuXHRcdFx0XHRcdGNvbG9yOiAjYzRjNGM0ICFpbXBvcnRhbnQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRzcGFuLmpjb25maXJtLXRpdGxlIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHRjb2xvcjogIzMzMztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHNwYW4uamNvbmZpcm0taWNvbi1jICsgc3Bhbi5qY29uZmlybS10aXRsZSB7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogMjBweCAhaW1wb3J0YW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGRpdi5qY29uZmlybS1jb250ZW50LXBhbmUge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAyNnB4O1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblxuXHRcdFx0XHQuamNvbmZpcm0tY29udGVudCB7XG5cdFx0XHRcdFx0b3ZlcmZsb3c6IGluaGVyaXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0ZGl2Lmpjb25maXJtLWNvbnRlbnQge1xuXHRcdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0XHRcdGNvbG9yOiAjNTU1O1xuXHRcdFx0XHRsaW5lLWhlaWdodDogMS40O1xuXG5cdFx0XHRcdCYubGl0ZS11cGdyYWRlIHtcblx0XHRcdFx0XHRwIHtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRcdFx0XHRcdHBhZGRpbmc6IDAgMjBweDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRwIHtcblx0XHRcdFx0XHRtYXJnaW46IDAgMCAxNnB4O1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogMS41O1xuXG5cdFx0XHRcdFx0JjpsYXN0LW9mLXR5cGUge1xuXHRcdFx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYubGFyZ2Uge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYuc21hbGwge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC5hbHJlYWR5LXB1cmNoYXNlZCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0XHRcdGNvbG9yOiAjY2NjO1xuXHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuXHRcdFx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGRpdi5qY29uZmlybS1idXR0b25zIHtcblxuXHRcdFx0XHQuYWxyZWFkeS1wdXJjaGFzZWQge1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdFx0XHRjb2xvcjogI2FhYTtcblx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdFx0cGFkZGluZy10b3A6IDIwcHg7XG5cblx0XHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRcdGNvbG9yOiAjOTk5O1xuXHRcdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC5kaXNjb3VudC1ub3RlIHtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRtYXJnaW46IDMwcHggMCAwO1xuXG5cdFx0XHRcdHAge1xuXHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmYWZmYWM7XG5cdFx0XHRcdFx0bWFyZ2luOiAwIC0zMHB4O1xuXHRcdFx0XHRcdHBhZGRpbmc6IDI0cHggNjBweCAyMHB4O1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRcdFx0XHRjb2xvcjogIzRkNGQ0ZDtcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRcdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0XHRcdGNvbnRlbnQ6ICdcXGYwNTgnO1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdFx0Zm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIEZvbnRBd2Vzb21lO1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMjZweDtcblx0XHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdFx0XHRcdHBhZGRpbmc6IDVweCA2cHg7XG5cdFx0XHRcdFx0XHR0ZXh0LXJlbmRlcmluZzogYXV0bztcblx0XHRcdFx0XHRcdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRcdFx0XHRcdFx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHRcdHRvcDogLTIwcHg7O1xuXHRcdFx0XHRcdFx0cmlnaHQ6IDUwJTtcblx0XHRcdFx0XHRcdG1hcmdpbi1yaWdodDogLTE4cHg7XG5cdFx0XHRcdFx0XHRjb2xvcjogIzNhYmMwMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0XHRcdGNvbG9yOiAjM2FiYzAxO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0Y29sb3I6ICNhYWE7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogMTJweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpbnB1dFt0eXBlPXRleHRdIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdHdpZHRoOiA5OSU7XG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNkNmQ2ZDY7XG5cdFx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRcdG1hcmdpbjogMjBweCBhdXRvIDAgYXV0bztcblx0XHRcdH1cblxuXHRcdFx0I3dwZm9ybXMtZW1iZWQtc2hvcnRjb2RlIHtcblx0XHRcdFx0bWFyZ2luOiAyMHB4IDA7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdFx0XHRwYWRkaW5nOiA4cHggNXB4O1xuXHRcdFx0fVxuXG5cdFx0XHQjd3Bmb3Jtcy1lbWJlZC1zaG9ydGNvZGU6ZGlzYWJsZWQge1xuXHRcdFx0XHRjb2xvcjogIzMzMztcblx0XHRcdH1cblxuXHRcdFx0YnV0dG9uLmJ0bi1jb25maXJtIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG9yYW5nZTtcblx0XHRcdFx0Y29sb3I6ICNmZmY7XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cblx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGRhcmtvcmFuZ2U7XG5cdFx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkZGFya29yYW5nZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQuZXJyb3Ige1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHRjb2xvcjogcmVkO1xuXHRcdFx0fVxuXG5cdFx0XHQud3Bmb3Jtcy1lcnJvciB7XG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNlYmNjZDEgIWltcG9ydGFudDtcblx0XHRcdH1cblxuXHRcdFx0Lmpjb25maXJtLXRpdGxlLWMgLmpjb25maXJtLWljb24tYyB7XG5cdFx0XHRcdC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuXHRcdFx0XHR0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0XHRcdC13ZWJraXQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0XHRcdC1tcy10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcblx0XHRcdFx0dHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0XHRcdGZvbnQtc2l6ZTogNDVweCAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5jaG9pY2VzIHtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXG5cdFx0aW5wdXRbdHlwZT10ZXh0XS5jaG9pY2VzX19pbnB1dCB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcblx0XHR9XG5cdH1cbn1cbiIsIi8vIEFsZXJ0IHN0eWxlcy5cbi53cGZvcm1zLWFkbWluLXBhZ2Uge1xuXG5cdC53cGZvcm1zLWFsZXJ0IHtcblx0XHRwYWRkaW5nOiAxNnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDE4cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cblx0XHRoNCB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDAgMCAxNXB4IDA7XG5cblx0XHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYud3Bmb3Jtcy1hbGVydC1ub21hcmdpbiB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0Ji53cGZvcm1zLWFsZXJ0LXNtYWxsIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHR9XG5cblx0XHQmLndwZm9ybXMtYWxlcnQtc3VjY2VzcyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZGZmMGQ4O1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAjZDZlOWM2O1xuXHRcdFx0Y29sb3I6ICMzYzc2M2Q7XG5cdFx0fVxuXG5cdFx0Ji53cGZvcm1zLWFsZXJ0LWluZm8ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNztcblx0XHRcdGJvcmRlci1jb2xvcjogI2JjZThmMTtcblx0XHRcdGNvbG9yOiAjMzE3MDhmO1xuXHRcdH1cblxuXHRcdCYud3Bmb3Jtcy1hbGVydC13YXJuaW5nIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7XG5cdFx0XHRib3JkZXItY29sb3I6ICNmYWViY2M7XG5cdFx0XHRjb2xvcjogIzhhNmQzYjtcblx0XHR9XG5cblx0XHQmLndwZm9ybXMtYWxlcnQtZGFuZ2VyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7XG5cdFx0XHRib3JkZXItY29sb3I6ICNlYmNjZDE7XG5cdFx0XHRjb2xvcjogI2E5NDQ0Mjtcblx0XHR9XG5cdH1cbn0iLCIvLyBGbGFnIGljb25zLlxuLndwZm9ybXMtZmxhZyB7XG5cdHdpZHRoOiAxNnB4O1xuXHRoZWlnaHQ6IDE2cHg7XG5cdGJhY2tncm91bmQ6dXJsKC4uL2ltYWdlcy9mbGFncy5wbmcpIG5vLXJlcGVhdDtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hZCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggMH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWFlIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAwfVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctYWYge2JhY2tncm91bmQtcG9zaXRpb246IC00OHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hZyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggMH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWFpIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAwfVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctYWwge2JhY2tncm91bmQtcG9zaXRpb246IC05NnB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hbSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hbiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hbyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hciB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hcyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hdCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hdSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1hdyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IDB9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1heiB7YmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJhIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJiIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJkIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJlIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJmIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJnIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJoIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1iaSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xNnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctYmoge2JhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTE2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ibiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xNnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctYm8ge2JhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWJyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTE2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1icyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC0xNnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctYnQge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1idyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ieSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ieiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jYSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jZCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jZiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jZyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0zMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY2gge2JhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMzJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWNpIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jayB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0zMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY2wge2JhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMzJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWNtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTMycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1jbiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0zMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY28ge2JhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMzJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWNyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY3Uge2JhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY3Yge2JhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY3kge2JhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctY3oge2JhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZGUge2JhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZGoge2JhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZGsge2JhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtNDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWRtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTQ4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1kbyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZHoge2JhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtNDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWVjIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTQ4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1lZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC00OHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZWcge2JhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtNDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWVoIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTQ4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1lciB7YmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWVzIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWV0IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWZpIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWZqIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWZtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWZvIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWZyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTY0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1nYSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC02NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZ2Ige2JhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWdkIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTY0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1nZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC02NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZ2cge2JhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtNjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWdoIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTY0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1naSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC02NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZ2wge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1nbSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1nbiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ncCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ncSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1nciB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ndCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ndSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC04MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctZ3cge2JhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtODBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWd5IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1oayB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC04MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaG4ge2JhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtODBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWhyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTgwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1odCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC04MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaHUge2JhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtODBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWlkIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaWUge2JhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaWwge2JhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaW0ge2JhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaW4ge2JhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaXEge2JhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaXIge2JhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctaXMge2JhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtOTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWl0IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTk2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1qZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctam0ge2JhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtOTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWpvIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTk2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1qcCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC05NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWcta2Uge2JhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtOTZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWtnIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTk2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1raCB7YmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTEycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1raSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTExMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWcta20ge2JhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xMTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWtuIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTEycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1rcCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTExMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWcta3Ige2JhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xMTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWt3IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTEycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1reSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xMTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWt6IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTExMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbGEge2JhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTEycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1sYiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0xMTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWxjIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTExMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbGkge2JhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTEycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1sayB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0xMTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWxyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTExMnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbHMge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTEyOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbHQge2JhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xMjhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLWx1IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTI4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1sdiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTEyOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbHkge2JhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xMjhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW1hIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTI4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tYyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTEyOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbWQge2JhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTI4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xMjhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW1nIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTEyOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbWgge2JhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMTI4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tayB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xMjhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW1sIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTEyOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbW0ge2JhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtMTI4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tbiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC0xMjhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW1vIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNDRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW1xIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTQ0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tciB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE0NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbXMge2JhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xNDRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW10IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTQ0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1tdSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE0NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbXYge2JhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xNDRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW13IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE0NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbXgge2JhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTQ0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1teSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xNDRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW16IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTE0NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbmEge2JhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMTQ0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1uYyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0xNDRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW5lIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTE0NHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbmcge2JhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMTQ0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1uaSB7YmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTYwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ubCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE2MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbm8ge2JhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xNjBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW5wIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTYwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1uciB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE2MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctbnoge2JhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNjBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLW9tIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTYwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1wYSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xNjBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXBlIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTE2MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcGYge2JhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTYwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1wZyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0xNjBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXBoIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTE2MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcGsge2JhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTYwcHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1wbCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0xNjBweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXByIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTE2MHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcHMge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTE3NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcHQge2JhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xNzZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXB3IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTc2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1weSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE3NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcWEge2JhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xNzZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXJlIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTc2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ybyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE3NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctcnMge2JhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTc2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1ydSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xNzZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXJ3IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE3NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc2Ege2JhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMTc2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1zYiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xNzZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXNjIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTE3NnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc2Qge2JhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtMTc2cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1zZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC0xNzZweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXNnIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xOTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXNpIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTkycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1zayB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE5MnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc2wge2JhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xOTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXNtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTkycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1zbiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE5MnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc28ge2JhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xOTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXNyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE5MnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc3Qge2JhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTkycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy1zdiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xOTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXN5IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTE5MnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctc3oge2JhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMTkycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10YyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0xOTJweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXRkIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTE5MnB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdGcge2JhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMTkycHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10aCB7YmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMjA4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10aiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTIwOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdGwge2JhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0yMDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXRtIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMjA4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10biB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTIwOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdG8ge2JhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0yMDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXRyIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMjA4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10dCB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0yMDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXR2IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTIwOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdHcge2JhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMjA4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy10eiB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0yMDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXVhIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTIwOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdWcge2JhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMjA4cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy11cyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0yMDhweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXV5IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTIwOHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdXoge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTIyNHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdmEge2JhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0yMjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXZjIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMjI0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy12ZSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTIyNHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdmcge2JhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0yMjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXZpIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMjI0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy12biB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTIyNHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctdnUge2JhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMjI0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy13cyB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0yMjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXllIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTIyNHB4fVxuLndwZm9ybXMtZmxhZy53cGZvcm1zLWZsYWctemEge2JhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMjI0cHh9XG4ud3Bmb3Jtcy1mbGFnLndwZm9ybXMtZmxhZy16bSB7YmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0yMjRweH1cbi53cGZvcm1zLWZsYWcud3Bmb3Jtcy1mbGFnLXp3IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTIyNHB4fVxuIiwiLy8gSGVhZGVyIHN0eWxlcy5cblxuI3dwZm9ybXMtaGVhZGVyLXRlbXAge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG1hcmdpbjogMDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IC0xcHg7XG5cdGxlZnQ6IDIwcHg7XG5cdHJpZ2h0OiAyMHB4O1xuXHR6LWluZGV4OiA5OTtcbn1cblxuI3dwZm9ybXMtaGVhZGVyIHtcblx0Ym9yZGVyLXRvcDogM3B4IHNvbGlkICRvcmFuZ2U7XG5cdHBhZGRpbmc6IDIycHggMjBweDtcblxuXHRpbWcge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbjogMDtcblx0XHRtYXgtd2lkdGg6IDIzNXB4O1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI8PXRhYmxldFwiKSB7XG5cdFx0XHRtYXgtd2lkdGg6IDIwMHB4O1xuXHRcdH1cblx0fVxufVxuIiwiLy8gUGFnZSB0aXRsZSBhbmQgdGFicyBzdHlsZXMuXG4ud3Bmb3Jtcy1hZG1pbi13cmFwIHtcblxuXHQvLyBUaXRsZSBhcmVhLlxuXHQucGFnZS10aXRsZSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRtYXJnaW46IDAgMCAyMHB4IDA7XG5cdFx0cGFkZGluZzogMTVweCAyMHB4O1xuXG5cdFx0LmFkZC1uZXctaDIge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDI4cHg7XG5cdFx0fVxuXHR9XG59XG5cbi8vIFRhYiBuYXZpZ2F0aW9uLlxuLndwZm9ybXMtYWRtaW4tdGFicyB7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdG1hcmdpbjogMCAwIDIwcHggMDtcblx0cGFkZGluZzogMCAyMHB4O1xuXHRsaXN0LXN0eWxlOiBub25lO1xuXHRvdmVyZmxvdzogYXV0bztcblx0Zm9udC1zaXplOiAxNHB4O1xuXG5cdGxpIHtcblx0XHRtYXJnaW46IDAgMzBweCAwIDA7XG5cdFx0cGFkZGluZzogMDtcblx0XHRmbG9hdDogbGVmdDtcblxuXHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cblx0XHRhIHtcblx0XHRcdGNvbG9yOiAjNjY2O1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRwYWRkaW5nOiAyMHB4IDAgMThweCAwO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmZmY7XG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjOTk5O1xuXHRcdFx0fVxuXG5cdFx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJG9yYW5nZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi8vIEdlbmVyYWwgYWRtaW4gc3R5bGluZy5cblxuLy8gQ29yZSBhZG1pbiBzdHlsZSBvdmVycmlkZXMuXG4jd3Bjb250ZW50IHtcblx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRAaW5jbHVkZSBtZWRpYShcIjw9cGhvbmVcIikge1xuXHRcdHBhZGRpbmctdG9wOiA0NnB4O1xuXHR9XG59XG5cbiN3cGJvZHkge1xuXHRAaW5jbHVkZSBtZWRpYShcIjw9cGhvbmVcIikge1xuXHRcdHBhZGRpbmctdG9wOiAwO1xuXHR9XG59XG5cbi8vIFRoaXMgY2xhc3MgaXMgYXV0byBhcHBsaWVkIHRvIF9hbGxfIFdQRm9ybXMgYWRtaW4gcGFnZXMvc2NyZWVucy5cbi53cGZvcm1zLWFkbWluLXBhZ2Uge1xuXG5cdC8vIFRoaXMgaXMgaGlkZGVuIG9uIGxvYWQsIHRoZW4gbWFkZSB2aXNpYmxlIHdpdGggSlMsIHRvXG5cdC8vIHByZXZlbnQgaXQgZnJvbSBcImp1bXBpbmdcIi5cblx0I3NjcmVlbi1tZXRhLWxpbmtzLFxuXHQjc2NyZWVuLW1ldGEge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQvLyBSZXNwb25zaXZlIHZpZGVvIGNvbnRhaW5lciwgcmVwbGFjZXMgSlMgbWV0aG9kLlxuXHQudmlkZW8tY29udGFpbmVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0cGFkZGluZy1ib3R0b206IDU2LjElO1xuXHRcdC8vIHBhZGRpbmctdG9wOiAzMHB4O1xuXHRcdGhlaWdodDogMDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG5cblx0LnZpZGVvLWNvbnRhaW5lciBpZnJhbWUsXG5cdC52aWRlby1jb250YWluZXIgb2JqZWN0LFxuXHQudmlkZW8tY29udGFpbmVyIGVtYmVkIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHR9XG5cblx0Ly8gRmFuY3kgZmlsZSB1cGxvYWQuXG5cdC53cGZvcm1zLWZpbGUtdXBsb2FkIHtcblxuXHRcdGlucHV0W3R5cGU9ZmlsZV0ge1xuXHRcdFx0d2lkdGg6IDAuMXB4O1xuXHRcdFx0aGVpZ2h0OiAwLjFweDtcblx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0ei1pbmRleDogLTE7XG5cdFx0fVxuXG5cdFx0bGFiZWwge1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0fVxuXG5cdFx0aW5wdXRbdHlwZT1maWxlXTpmb2N1cyArIGxhYmVsLFxuXHRcdGlucHV0W3R5cGU9ZmlsZV0uaGFzLWZvY3VzICsgbGFiZWwge1xuXHRcdFx0b3V0bGluZTogMXB4IGRvdHRlZCAjMDAwO1xuXHRcdFx0b3V0bGluZTogLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIGF1dG8gNXB4O1xuXHRcdH1cblxuXHRcdC5mbGQge1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdGNvbG9yOiAjMzMzO1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRcdHBhZGRpbmc6IDdweCAxMnB4O1xuXHRcdFx0bWFyZ2luOiAwIDEwcHggMCAwO1xuXHRcdFx0d2lkdGg6IDQwMHB4O1xuXHRcdFx0bWluLWhlaWdodDogMzVweDtcblxuXHRcdFx0LnBsYWNlaG9sZGVyIHtcblx0XHRcdFx0Y29sb3I6ICNjY2M7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0c3Ryb25nIC5mYSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDhweDtcblx0XHR9XG5cdH1cblxuXHQvLyBHZW5yaWMgY2xhc3MgZm9yIGhpZGluZyBkaXNwbGF5O1xuXHQud3Bmb3Jtcy1oaWRlIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Ly8gUGxhY2Vob2xkZXIgaDEgZm9yIGFkbWluIG5vdGljZXMuXG5cdC53cGZvcm1zLWgxLXBsYWNlaG9sZGVyIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Ly8gSGlkZSBub3RpY2VzIG9uIGxvYWQgdG8gcHJldmVudCBqdW1waW5nLiBKUyB3aWxsIHJldmVhbCB0aGVtLlxuXHQubm90aWNlIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG59XG5cbi8vIEFkbWluIHdyYXAgLSBjb250YWlucyBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgaGVhZGVyLlxuLndwZm9ybXMtYWRtaW4td3JhcCB7XG5cblx0bWFyZ2luOiAwO1xuXG5cdC5ub3RpY2Uge1xuXHRcdG1hcmdpbi1sZWZ0OiAyMHB4ICFpbXBvcnRhbnQ7XG5cdFx0bWFyZ2luLXJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLy8gQWRtaW4gY29udGVudC5cbi53cGZvcm1zLWFkbWluLWNvbnRlbnQge1xuXHRwYWRkaW5nLWxlZnQ6IDIwcHg7XG5cdHBhZGRpbmctcmlnaHQ6IDIwcHg7XG5cblx0JjpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6IFwiIFwiO1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHR9XG5cblx0JjphZnRlciB7XG5cdFx0Y2xlYXI6IGJvdGg7XG5cdFx0Y29udGVudDogXCIgXCI7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdH1cbn1cblxuLndwZm9ybXMtY2xlYXIge1xuXG5cdCY6YmVmb3JlIHtcblx0XHRjb250ZW50OiBcIiBcIjtcblx0XHRkaXNwbGF5OiB0YWJsZTtcblx0fVxuXG5cdCY6YWZ0ZXIge1xuXHRcdGNsZWFyOiBib3RoO1xuXHRcdGNvbnRlbnQ6IFwiIFwiO1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHR9XG59XG5cbi53cGZvcm1zLWFkbWluLWNvbHVtbnMge1xuXG5cdCYgPiBkaXZbY2xhc3MqPVwiLWNvbHVtbi1cIl0ge1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHR9XG5cblx0LndwZm9ybXMtYWRtaW4tY29sdW1uLTIwIHt3aWR0aDogMjAlfVxuXHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tMzMge3dpZHRoOiAzMy4zMzMzMyV9XG5cdC53cGZvcm1zLWFkbWluLWNvbHVtbi00MCB7d2lkdGg6IDQwJX1cblx0LndwZm9ybXMtYWRtaW4tY29sdW1uLTUwIHt3aWR0aDogNTAlfVxuXHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tNjAge3dpZHRoOiA2MCV9XG5cdC53cGZvcm1zLWFkbWluLWNvbHVtbi04MCB7d2lkdGg6IDgwJX1cblxuXHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tbGFzdCB7ZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnR9XG5cblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRkaXNwbGF5OiB0YWJsZTtcblx0XHRjbGVhcjogYm90aDtcblx0fVxufVxuIiwiLy8gRm9ybSBPdmVydmlldyAtIGFkbWluLnBocD9wYWdlPXdwZm9ybXMtb3ZlcnZpZXdcbiN3cGZvcm1zLW92ZXJ2aWV3IHtcblxuXHQvLyBSZW1vdmUgdGhlIHRvcCBtYXJnaW4gc28gaXQgZGlzcGxheXMgMjBweCBiZXR3ZWVuIHRoZSBoZWFkZXIgYXJlYVxuXHQvLyBhbmQgdGhlIGNvbnRlbnQsIGNvbnNpc3RlbnQgd2l0aCBvdXIgb3RoZXIgYWRtaW4gcGFnZXMuXG5cdC50YWJsZW5hdi50b3Age1xuXHRcdG1hcmdpbi10b3A6IDA7XG5cdH1cblxuXHQvLyBTZXQgY2VydGFpbiBjb2x1bW4gd2lkdGhzLlxuXHQud3AtbGlzdC10YWJsZSB7XG5cblx0XHQuY29sdW1uLWlkIHtcblx0XHRcdHdpZHRoOiAzMHB4O1xuXHRcdH1cblxuXHRcdC5jb2x1bW4tZW50cmllcyB7XG5cdFx0XHR3aWR0aDogNzBweDtcblx0XHR9XG5cblx0XHQuY29sdW1uLXNob3J0Y29kZSB7XG5cdFx0XHR3aWR0aDogMTUwcHg7XG5cdFx0fVxuXG5cdFx0LmNvbHVtbi1jcmVhdGVkIHtcblx0XHRcdHdpZHRoOiAxNDVweDtcblx0XHR9XG5cdH1cbn1cbiIsIi8vIEVudHJpZXMgU2luZ2xlIChEZXRhaWxzKSAtIGFkbWluLnBocD9wYWdlPXdwZm9ybXMtZW50cmllcyZ2aWV3PWRldGFpbHNcbiN3cGZvcm1zLWVudHJpZXMtc2luZ2xlIHtcblxuXHQjcG9zdHN0dWZmIHtcblx0XHRwYWRkaW5nOiAwO1xuXHR9XG5cblx0Ly8gTWV0YWJveGVzIGFyZSBub3QgbW92YWJsZSBzbyBkb24ndCBsZXQgdGhlIHVzZXIgdGhpbmsgc28uXG5cdC5wb3N0Ym94IC5obmRsZSB7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQvLyBFbnRyeSBuYXZpZ2F0aW9uIC0gbmV4dC9wcmV2LlxuXHQud3Bmb3Jtcy1lbnRyeS1uYXZpZ2F0aW9uIHtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0bGluZS1oZWlnaHQ6IDI5cHg7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRwYWRkaW5nLXRvcDogMnB4O1xuXHRcdHBhZGRpbmctcmlnaHQ6IDFweDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI8PXBob25lXCIpIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmFkZC1uZXctaDIge1xuXHRcdFx0dG9wOiBhdXRvO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZzogNHB4IDBweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8PXRhYmxldFwiKSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdH1cblxuXHRcdFx0LmRhc2hpY29ucyB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdFx0XHR3aWR0aDogMjhweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDI5cHg7XG5cdFx0XHR9XG5cblx0XHRcdCYuaW5hY3RpdmUge1xuXHRcdFx0XHRvcGFjaXR5OiAwLjU7XG5cdFx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZW50cnktbmF2aWdhdGlvbi10ZXh0IHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1lbnRyeS1jdXJyZW50IHtcblx0XHRcdHRvcDogYXV0bztcblx0XHRcdG1hcmdpbjogMCAtNXB4IDAgLTNweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdHBhZGRpbmc6IDRweCAxMHB4O1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2NjYztcblx0XHRcdC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMnB4O1xuXHRcdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAyOXB4O1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IGNlbnRlcjtcblx0XHR9XG5cblx0fVxuXG5cdC8vIEVudHJ5IGZpZWxkcyBtZXRhYm94LlxuXHQjd3Bmb3Jtcy1lbnRyeS1maWVsZHMge1xuXG5cdFx0aDIuaG5kbGUge1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXG5cdFx0XHQuZGFzaGljb25zIHtcblx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0XHRoZWlnaHQ6IDE2cHg7XG5cdFx0XHRcdHdpZHRoOiAxNnB4O1xuXHRcdFx0XHRtYXJnaW46IDRweCA0cHggMCAwO1xuXHRcdFx0XHRjb2xvcjogJG9yYW5nZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQubm8tZmllbGRzIHtcblx0XHRcdHBhZGRpbmc6IDEycHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0Lmluc2lkZSB7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXG5cdFx0XHRwIHtcblx0XHRcdFx0cGFkZGluZzogMDtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQud3Bmb3Jtcy1lbnRyeS1maWVsZC1uYW1lIHtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ViZjNmYjtcblx0XHRcdFx0cGFkZGluZzogOHB4IDEycHg7XG5cdFx0XHR9XG5cblx0XHRcdC53cGZvcm1zLWVudHJ5LWZpZWxkLXZhbHVlIHtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0XHRcdFx0cGFkZGluZzogOHB4IDEycHg7XG5cdFx0XHR9XG5cblx0XHRcdC5lbXB0eSAud3Bmb3Jtcy1lbnRyeS1maWVsZC12YWx1ZSB7XG5cdFx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdFx0Y29sb3I6ICM5OTk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZW1wdHktZmllbGQtdG9nZ2xlIHtcblx0XHRcdGZsb2F0OiByaWdodDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdHBhZGRpbmc6IDVweCAwIDA7XG5cdFx0fVxuXHR9XG5cblx0Ly8gRW50cnkgTm90ZXMgbWV0YWJveC5cblx0I3dwZm9ybXMtZW50cnktbm90ZXMge1xuXG5cdFx0Lmluc2lkZSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdH1cblxuXHRcdC53cGZvcm1zLWVudHJ5LW5vdGVzLW5ldyB7XG5cdFx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdH1cblxuXHRcdGZvcm0ge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQuYnRucyB7XG5cdFx0XHRvdmVyZmxvdzogYXV0bztcblx0XHRcdHBhZGRpbmc6IDhweCAwO1xuXHRcdH1cblxuXHRcdC5uby1ub3RlcyB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiA0cHggMTBweCA4cHg7XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZW50cnktbm90ZXMtc2luZ2xlIHtcblx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2UzZTFlMztcblxuXHRcdFx0cDpsYXN0LW9mLXR5cGUge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQmLmV2ZW4ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53cGZvcm1zLWVudHJ5LW5vdGVzLWJ5bGluZSB7XG5cdFx0XHRjb2xvcjogIzg4ODtcblx0XHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cblx0XHRcdC5zZXAge1xuXHRcdFx0XHRjb2xvcjogI2RkZDtcblx0XHRcdH1cblxuXHRcdFx0Lm5vdGVzLXVzZXIge1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0XHR9XG5cblx0XHRcdC5ub3RlLWRlbGV0ZSB7XG5cdFx0XHRcdGNvbG9yOiAjYTAwO1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cblx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0Y29sb3I6IHJlZDtcblx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBFbnRyeSBEZXRhaWxzLCBBY3Rpb25zLCBhbmQgUGF5bWVudHMuXG5cdCN3cGZvcm1zLWVudHJ5LWRldGFpbHMgLmluc2lkZSxcblx0I3dwZm9ybXMtZW50cnktcGF5bWVudCAuaW5zaWRlLFxuXHQjd3Bmb3Jtcy1lbnRyeS1hY3Rpb25zIC5pbnNpZGUge1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAwO1xuXHR9XG5cblx0LndwZm9ybXMtZW50cnktZGV0YWlscy1tZXRhLFxuXHQud3Bmb3Jtcy1lbnRyeS1hY3Rpb25zLW1ldGEgIHtcblx0XHRwYWRkaW5nOiA2cHggMCAwO1xuXHR9XG5cblx0LndwZm9ybXMtZW50cnktZGV0YWlscy1tZXRhIHAsXG5cdC53cGZvcm1zLWVudHJ5LXBheW1lbnQtbWV0YSBwLFxuXHQud3Bmb3Jtcy1lbnRyeS1hY3Rpb25zLW1ldGEgcCB7XG5cdFx0cGFkZGluZzogNnB4IDEwcHggOHB4O1xuXHRcdG1hcmdpbjogMDtcblx0fVxuXG5cdC53cGZvcm1zLWVudHJ5LXBheW1lbnQtbWV0YSB7XG5cdFx0cGFkZGluZzogMDtcblx0fVxuXG5cdC53cGZvcm1zLWVudHJ5LXBheW1lbnQtbWV0YSBwIHtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcblx0XHRwYWRkaW5nOiAxMHB4O1xuXHR9XG5cblx0LndwZm9ybXMtZW50cnktcGF5bWVudC1tZXRhIHA6bGFzdC1vZi10eXBlIHtcblx0XHRib3JkZXItYm90dG9tOiAwO1xuXHR9XG5cblx0LndwZm9ybXMtZW50cnktZGV0YWlscy1tZXRhIHN0cm9uZyxcblx0LndwZm9ybXMtZW50cnktYWN0aW9ucy1tZXRhIHN0cm9uZyB7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0fVxuXG5cdC53cGZvcm1zLWVudHJ5LWRldGFpbHMtbWV0YSAuZGFzaGljb25zLFxuXHQud3Bmb3Jtcy1lbnRyeS1hY3Rpb25zLW1ldGEgLmRhc2hpY29ucyB7XG5cdFx0cGFkZGluZzogMCAycHggMCAwO1xuXHRcdGNvbG9yOiAjODI4NzhBO1xuXHRcdHRvcDogLTFweDtcblx0XHRsZWZ0OiAtMXB4O1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdH1cblxuXHQjd3Bmb3Jtcy1lbnRyeS1kZXRhaWxzIC5zdWJtaXRkZWxldGUge1xuXHRcdGNvbG9yOiAjYTAwO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRwYWRkaW5nOiAxcHggMnB4O1xuXHR9XG5cblx0I3dwZm9ybXMtZW50cnktZGV0YWlscyAuc3VibWl0ZGVsZXRlOmhvdmVyIHtcblx0XHRjb2xvcjogcmVkO1xuXHR9XG5cblx0LndwZm9ybXMtZW50cnktYWN0aW9ucy1tZXRhIGEge1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0fVxuXG5cdC53cGZvcm1zLWVudHJ5LWFjdGlvbnMtbWV0YSBhOmhvdmVyIHtcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0fVxuXG5cdC8vIEVudHJ5IExvY2F0aW9uLlxuXHQjd3Bmb3Jtcy1lbnRyeS1nZW9sb2NhdGlvbiB7XG5cblx0XHQuaW5zaWRlIHtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0dWwge1xuXHRcdFx0bWFyZ2luOiAwO1xuXG5cdFx0XHRsaSB7XG5cdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdG92ZXJmbG93OiBhdXRvO1xuXG5cdFx0XHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZ2VvbG9jYXRpb24tbWV0YSB7XG5cdFx0XHR3aWR0aDogODVweDtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2VlZTtcblx0XHRcdHBhZGRpbmc6IDEwcHggMjBweCAxMHB4IDEycHg7XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZ2VvbG9jYXRpb24tdmFsdWUge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0cGFkZGluZzogMTBweCAxMnB4IDEwcHggMjBweDtcblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1mbGFnIHtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcblx0XHRcdG1hcmdpbi1yaWdodDogNHB4O1xuXHRcdH1cblx0fVxufVxuIiwiLy8gRW50cmllcyBMaXN0IC0gYWRtaW4ucGhwP3BhZ2U9d3Bmb3Jtcy1lbnRyaWVzJnZpZXc9bGlzdFxuI3dwZm9ybXMtZW50cmllcy1saXN0IHtcblxuXHQuZm9ybS1kZXRhaWxzIHtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTVweDtcblx0XHRtYXJnaW46IDAgMCAxMHB4O1xuXG5cdFx0LmZvcm0tZGV0YWlscy1zdWIge1xuXHRcdFx0Y29sb3I6ICM5OTk7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRtYXJnaW46IDAgMCA4cHggMDtcblx0XHR9XG5cblx0XHQuZm9ybS1kZXRhaWxzLXRpdGxlIHtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRcdG1hcmdpbjogMDtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8MTIwMHB4XCIpIHtcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmZvcm0tc2VsZWN0b3Ige1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0XHQudG9nZ2xlIHtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0XHRjb2xvcjogIzQ0NDtcblx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0XHRib3gtc2hhZG93OiBub25lO1xuXG5cdFx0XHRcdCY6aG92ZXIsXG5cdFx0XHRcdCYuYWN0aXZlIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlM2UzO1xuXHRcdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQuZm9ybS1saXN0IHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDJweCA4cHggMCByZ2JhKDAsMCwwLDAuMSk7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0dG9wOiAyN3B4O1xuXHRcdFx0XHRsZWZ0OiAtMTA4cHg7XG5cdFx0XHRcdHdpZHRoOiAyMzBweDtcblx0XHRcdFx0cGFkZGluZzogMTBweCAwO1xuXHRcdFx0XHR6LWluZGV4OiA5OTkxO1xuXG5cdFx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0XHRjb250ZW50OiBcIiBcIjtcblx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0dG9wOiAtMTBweDtcblx0XHRcdFx0XHRsZWZ0OiAxMTBweDtcblx0XHRcdFx0XHR3aWR0aDogMDtcblx0XHRcdFx0XHRoZWlnaHQ6IDA7XG5cdFx0XHRcdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRcdFx0XHRib3JkZXItd2lkdGg6IDAgOHB4IDEwcHggOHB4O1xuXHRcdFx0XHRcdGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZmZiB0cmFuc3BhcmVudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHR1bCB7XG5cdFx0XHRcdG1heC1oZWlnaHQ6IDE5NnB4O1xuXHRcdFx0XHRvdmVyZmxvdy14OiBoaWRkZW47XG5cdFx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRcdG1hcmdpbjogMDtcblxuXHRcdFx0XHRsaSB7XG5cdFx0XHRcdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXG5cdFx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0XHRcdHBhZGRpbmc6IDVweCAxNXB4O1xuXHRcdFx0XHRcdFx0Y29sb3I6ICM0NDQ7XG5cblx0XHRcdFx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5mb3JtLWRldGFpbHMtYWN0aW9ucyB7XG5cdFx0XHRmbG9hdDogcmlnaHQ7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPDEyMDBweFwiKSB7XG5cdFx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0fVxuXG5cdFx0XHRhIHtcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdG1hcmdpbjogMCAxMnB4IDAgMDtcblxuXHRcdFx0XHQmOmxhc3Qtb2YtdHlwZSB7XG5cdFx0XHRcdFx0bWFyZ2luOiAwXG5cdFx0XHRcdH1cblxuXHRcdFx0XHQuZGFzaGljb25zIHtcblx0XHRcdFx0XHR3aWR0aDogMTZweDtcblx0XHRcdFx0XHRoZWlnaHQ6IDE2cHg7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gU2VhcmNoLlxuXHQuc2VhcmNoLWJveCB7XG5cdFx0LndwZm9ybXMtZm9ybS1zZWFyY2gtYm94LWZpZWxkIHtcblx0XHRcdG1heC13aWR0aDogMTgwcHg7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXHRcdFx0bWFyZ2luOiAwIDJweCAwIDA7XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtZm9ybS1zZWFyY2gtYm94LWNvbXBhcmlzb24ge1xuXHRcdFx0bWF4LXdpZHRoOiA5MHB4O1xuXHRcdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0XHRcdG1hcmdpbjogMCAycHggMCAwO1xuXHRcdH1cblxuXHRcdC53cGZvcm1zLWZvcm0tc2VhcmNoLWJveC10ZXJtIHtcblx0XHRcdGhlaWdodDogMjhweDtcblx0XHRcdG1hcmdpbjogMCAycHggMCAwO1xuXHRcdH1cblx0fVxuXG5cdC8vIEZpbHRlcmluZy5cblx0LndwZm9ybXMtZmlsdGVyLWRhdGUge1xuXG5cdFx0LndwZm9ybXMtZmlsdGVyLWRhdGUtc2VsZWN0b3Ige1xuXHRcdFx0aGVpZ2h0OiAyOHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0XHRtYXgtd2lkdGg6IDIxMHB4O1xuXHRcdH1cblxuXHRcdGJ1dHRvbiB7XG5cdFx0XHRtYXJnaW46IDFweCA4cHggMCAwO1xuXHRcdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0XHR9XG5cdH1cblxuXHQvLyBXUCBUYWJsZSBzdHlsaW5nLlxuXHQud3AtbGlzdC10YWJsZSB7XG5cblx0XHQubmV3LWVudHJpZXMtbm90aWZpY2F0aW9uIHRkIHtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRhIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0cGFkZGluZzogMTBweDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuY29sdW1uLWluZGljYXRvcnMge1xuXHRcdFx0d2lkdGg6IDM1cHg7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRcdGE6Zm9jdXMge1xuXHRcdFx0XHQtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmNvbHVtbi1pbmRpY2F0b3JzIC5kYXNoaWNvbnMge1xuXHRcdFx0d2lkdGg6IDE0cHg7XG5cdFx0XHRoZWlnaHQ6IDE0cHg7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRtYXJnaW4tdG9wOiAzcHg7XG5cdFx0fVxuXG5cdFx0LmluZGljYXRvci1zdGFyIC5kYXNoaWNvbnMge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XG5cdFx0fVxuXG5cdFx0LmluZGljYXRvci1zdGFyIHtcblx0XHRcdGNvbG9yOiAjZTRlNGU0O1xuXG5cdFx0XHQmOmhvdmVyLFxuXHRcdFx0Ji51bnN0YXIge1xuXHRcdFx0XHRjb2xvcjogJG9yYW5nZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuaW5kaWNhdG9yLXJlYWQge1xuXHRcdFx0Y29sb3I6ICM5ZWRlODQ7XG5cblx0XHRcdCY6aG92ZXIsXG5cdFx0XHQmLnVucmVhZCB7XG5cdFx0XHRcdGNvbG9yOiAjZTRlNGU0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5jb2x1bW4tZGF0ZSB7XG5cdFx0XHR3aWR0aDogMTUwcHg7XG5cdFx0fVxuXG5cdFx0LmNvbHVtbi1zdGF0dXMge1xuXHRcdFx0d2lkdGg6IDEyMHB4O1xuXG5cdFx0XHRpbWcge1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdGhlaWdodDogMTJweDtcblx0XHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRcdG1hcmdpbjogMCAwIDAgM3B4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5jb2x1bW4tcGF5bWVudF90b3RhbCB7XG5cdFx0XHR3aWR0aDogMTAwcHg7XG5cdFx0fVxuXG5cdFx0LmNvbHVtbi1hY3Rpb25zIHtcblx0XHRcdHdpZHRoOiAxMDBweDtcblx0XHR9XG5cblx0XHQuc2VwIHtcblx0XHRcdGNvbG9yOiAjZGRkO1xuXHRcdH1cblxuXHRcdC5kZWxldGU6aG92ZXIge1xuXHRcdFx0Y29sb3I6IHJlZDtcblx0XHR9XG5cdH1cblxuXHQjd3Bmb3Jtcy1lbnRyaWVzLXRhYmxlLWVkaXQtY29sdW1ucyB7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdGNvbG9yOiAjY2NjO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogIzY2Njtcblx0XHR9XG5cdH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzgycHgpIHtcblxuXHQud3Bmb3Jtcy1hZG1pbi1jb250ZW50IHtcblx0XHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdFx0cGFkZGluZy1yaWdodDogMTBweDtcblx0fVxuXG5cdC53cC1saXN0LXRhYmxlIHtcblx0XHRtYXJnaW46IDAgLTEwcHggMCAtMTBweDtcblx0XHR3aWR0aDogMTAwdnc7XG5cdFx0dGFibGUtbGF5b3V0OiBhdXRvO1xuXHR9XG5cblx0LndwLWxpc3QtdGFibGUuZW50cmllcyB7XG5cblx0XHQuY29sdW1uLWluZGljYXRvcnMge1xuXHRcdFx0d2lkdGg6IGF1dG8gIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHQuaW5kaWNhdG9ycyB7XG5cdFx0XHQuaW5kaWNhdG9yLXN0YXIge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXHRcdFx0LmluZGljYXRvci1yZWFkIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0cjpub3QoLmlubGluZS1lZGl0LXJvdyk6bm90KC5uby1pdGVtcykgdGQuY29sdW1uLXByaW1hcnkge1xuXHRcdFx0aGVpZ2h0OiA4cHg7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0ei1pbmRleDogKzE7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHRvdmVyZmxvdzogdmlzaWJsZTtcblx0XHR9XG5cblx0XHQudG9nZ2xlLXJvdyB7XG5cdFx0XHRyaWdodDogNXB4O1xuXHRcdFx0dG9wOiAxNXB4O1xuXHRcdH1cblxuXHRcdHRyOm5vdCguaW5saW5lLWVkaXQtcm93KTpub3QoLm5vLWl0ZW1zKSB0ZC5jb2x1bW4tcHJpbWFyeSt0ZCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuXHRcdH1cblxuXHRcdHRyOm5vdCguaW5saW5lLWVkaXQtcm93KTpub3QoLm5vLWl0ZW1zKSB0ZC5jb2x1bW4tcHJpbWFyeX50ZCB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDVweDtcblx0XHRcdG1pbi13aWR0aDogNTB2dztcblx0XHR9XG5cblxuXHR9XG5cblx0cC5zZWFyY2gtYm94IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0d2lkdGg6IGF1dG87XG5cdH1cblxuXHRpbnB1dFt0eXBlPWNoZWNrYm94XSwgaW5wdXRbdHlwZT1yYWRpb10ge1xuXHRcdGhlaWdodDogMTZweDtcblx0XHR3aWR0aDogMTZweDtcblx0fVxuXG59IiwiLy8gV2VsY29tZSBBY3RpdmF0aW9uIC0gaW5kZXgucGhwP3BhZ2U9d3Bmb3Jtcy1nZXR0aW5nLXN0YXJ0ZWRcbiN3cGZvcm1zLXdlbGNvbWUge1xuXHRib3JkZXItdG9wOiAzcHggc29saWQgJG9yYW5nZTtcblx0Y29sb3I6ICM1NTU7XG5cdHBhZGRpbmctdG9wOiAxMTBweDtcblxuXHRAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcblx0XHRwYWRkaW5nLXRvcDogNjRweDtcblx0fVxuXG5cdCosXG5cdCo6OmJlZm9yZSxcblx0Kjo6YWZ0ZXIge1xuXHRcdC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHQtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0fVxuXG5cdC5jb250YWluZXIge1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdG1heC13aWR0aDogNzIwcHg7XG5cdFx0cGFkZGluZzogMDtcblx0fVxuXG5cdC5ibG9jayB7XG5cdFx0cGFkZGluZzogNDBweDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0cGFkZGluZzogMjBweDtcblx0XHR9XG5cdH1cblxuXHRpbWcge1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IGF1dG87XG5cdH1cblxuXHRoMSB7XG5cdFx0Y29sb3I6ICMyMjI7XG5cdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRtYXJnaW46IDAgMCAxNnB4IDA7XG5cdH1cblxuXHRoNSB7XG5cdFx0Y29sb3I6ICMyMjI7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdG1hcmdpbjogMCAwIDhweCAwO1xuXHR9XG5cblx0aDYge1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRmb250LXdlaWdodDogNDAwO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjY7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdG1hcmdpbjogMDtcblx0fVxuXG5cdHAge1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRtYXJnaW46IDAgMCAyMHB4IDA7XG5cdH1cblxuXHQuYnV0dG9uLXdyYXAge1xuXHRcdG1heC13aWR0aDogNTkwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG8gMCBhdXRvO1xuXG5cdFx0LmxlZnQge1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHR3aWR0aDogNTAlO1xuXHRcdFx0cGFkZGluZy1yaWdodDogMjBweDtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0cGFkZGluZzogMDtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQucmlnaHQge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0d2lkdGg6IDUwJTtcblx0XHRcdHBhZGRpbmctbGVmdDogMjBweDtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0cGFkZGluZzogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuaW50cm8ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgI2UxZTFlMTtcblx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMzBweDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0cGFkZGluZy10b3A6IDQwcHg7XG5cblx0XHQuc3VsbGllIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0XHRib3JkZXI6IDJweCBzb2xpZCAjZTFlMWUxO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0aGVpZ2h0OiAxMTBweDtcblx0XHRcdHdpZHRoOiAxMTBweDtcblx0XHRcdHBhZGRpbmc6IDE4cHggMTRweCAwIDE0cHg7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IC01OHB4O1xuXHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IC01NXB4O1xuXHRcdH1cblxuXHRcdC52aWRlby10aHVtYm5haWwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW46IDAgYXV0bztcblx0XHR9XG5cblx0XHQuYnV0dG9uLXdyYXAge1xuXHRcdFx0bWFyZ2luLXRvcDogMjVweDtcblx0XHR9XG5cdH1cblxuXHQuZmVhdHVyZXMge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgI2UxZTFlMTtcblx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6IDJweCAycHggMCAwO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRwYWRkaW5nLXRvcDogMjBweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMjBweDtcblxuXHRcdC5mZWF0dXJlLWxpc3Qge1xuXHRcdFx0bWFyZ2luLXRvcDogNjBweDtcblx0XHR9XG5cblx0XHQuZmVhdHVyZS1ibG9jayB7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdHdpZHRoOiA1MCU7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMzVweDtcblx0XHRcdG92ZXJmbG93OiBhdXRvO1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0fVxuXG5cdFx0XHQmLmZpcnN0IHtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogMjBweDtcblx0XHRcdFx0Y2xlYXI6IGJvdGg7XG5cblx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdFx0cGFkZGluZy1yaWdodDogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQmLmxhc3Qge1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDIwcHg7XG5cblx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGltZyB7XG5cdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHRtYXgtd2lkdGg6IDQ2cHg7XG5cdFx0XHR9XG5cblx0XHRcdGg1IHtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDY4cHhcblx0XHRcdH1cblxuXHRcdFx0cCB7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDY4cHhcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuYnV0dG9uLXdyYXAge1xuXHRcdFx0bWFyZ2luLXRvcDogMjVweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHR9XG5cdH1cblxuXHQudXBncmFkZS1jdGEge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgI2UxZTFlMTtcblx0XHRib3JkZXItdG9wOiAwO1xuXHRcdGJvcmRlci1ib3R0b206IDA7XG5cdFx0Y29sb3I6ICNmZmY7XG5cblx0XHRoMiB7XG5cdFx0XHRjb2xvcjogI2ZmZjtcblx0XHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRcdG1hcmdpbjogMCAwIDMwcHggMDtcblx0XHR9XG5cblx0XHR1bCB7XG5cdFx0XHRkaXNwbGF5OiAtbXMtZmxleDtcblx0XHRcdGRpc3BsYXk6IC13ZWJraXQtZmxleDtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHQtd2Via2l0LWZsZXgtd3JhcDogd3JhcDtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDA7XG5cblx0XHRcdGxpIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdHdpZHRoOiA1MCU7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDhweCAwO1xuXHRcdFx0XHRwYWRkaW5nOiAwO1xuXG5cdFx0XHRcdC5kYXNoaWNvbnMge1xuXHRcdFx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA1cHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQubGVmdCB7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdHdpZHRoOiA2Ni42NjY2NjYlO1xuXHRcdFx0cGFkZGluZy1yaWdodDogMjBweDtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogMDtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQucmlnaHQge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0d2lkdGg6IDMzLjMzMzMzMyU7XG5cdFx0XHRwYWRkaW5nOiAyMHB4IDAgMCAyMHB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0XHR9XG5cblx0XHRcdGgyIHtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cblx0XHRcdFx0c3BhbiB7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNTU1O1xuXHRcdFx0XHRcdHBhZGRpbmc6IDAgMTVweCAxMnB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC5wcmljZSB7XG5cdFx0XHRcdHBhZGRpbmc6IDI2cHggMDtcblxuXHRcdFx0XHQuYW1vdW50IHtcblx0XHRcdFx0XHRmb250LXNpemU6IDQ4cHg7XG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG5cdFx0XHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRcdFx0Y29udGVudDogJyQnO1xuXHRcdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRcdFx0dG9wOiAtOHB4O1xuXHRcdFx0XHRcdFx0bGVmdDogLTE2cHg7XG5cdFx0XHRcdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0LnRlcm0ge1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblxuXHR9XG5cblx0LnRlc3RpbW9uaWFscyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRib3JkZXI6IDJweCBzb2xpZCAjZTFlMWUxO1xuXHRcdGJvcmRlci10b3A6IDA7XG5cdFx0cGFkZGluZzogMjBweCAwO1xuXG5cdFx0LnRlc3RpbW9uaWFsLWJsb2NrIHtcblx0XHRcdG1hcmdpbjogNTBweCAwIDAgMDs7XG5cblx0XHRcdGltZyB7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdG1heC13aWR0aDogMTAwcHg7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAxOHB4IHJnYmEoMCwwLDAsLjIpO1xuXG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHRcdHdpZHRoOiA2NXB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHAge1xuXHRcdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDEycHggMTQwcHg7XG5cblx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDEwMHB4O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0JjpsYXN0LW9mLXR5cGUge1xuXHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuZm9vdGVyIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxO1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkICNlMWUxZTE7XG5cdFx0Ym9yZGVyLXRvcDogMDtcblx0XHRib3JkZXItcmFkaXVzOiAwIDAgMnB4IDJweDtcblx0fVxuXG5cdC8vIENoYW5nZXMgZm9yIHBhaWQgdmVyc2lvbi5cblx0Ji5wcm8ge1xuXG5cdFx0LmZlYXR1cmVzIHtcblx0XHRcdGJvcmRlcjogMnB4IHNvbGlkICNlMWUxZTE7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAzMHB4O1xuXHRcdH1cblxuXHRcdC51cGdyYWRlLFxuXHRcdC5mb290ZXIge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQudGVzdGltb25pYWxzIHtcblx0XHRcdGJvcmRlcjogMnB4IHNvbGlkICNlMWUxZTE7XG5cdFx0fVxuXHR9XG59XG5cbi5kYXNoYm9hcmRfcGFnZV93cGZvcm1zLWdldHRpbmctc3RhcnRlZCB7XG5cblx0LnZpZGVvLWNvbnRhaW5lciB7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgI2UxZTFlMTtcblx0fVxuXG5cdC8vIEhpZGUgYWRtaW4gZm9vdGVyLlxuXHQjd3Bmb290ZXIsXG5cdGRpdi5ub3RpY2Uge1xuXHRcdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblx0fVxufVxuIiwiLy8gQWRkb25zIExpc3QgLSBhZG1pbi5waHA/cGFnZT13cGZvcm1zLWFkZG9uc1xuI3dwZm9ybXMtYWRtaW4tYWRkb25zIHtcblxuXHQqLFxuXHQqOjpiZWZvcmUsXG5cdCo6OmFmdGVyIHtcblx0XHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0LW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdH1cblxuXHQuYWRkb25zLWNvbnRhaW5lciB7XG5cdFx0bWFyZ2luLWxlZnQ6IC0yMHB4O1xuXHRcdG1hcmdpbi1yaWdodDogLTIwcHg7XG5cdH1cblxuXHQudW5sb2NrLW1zZyB7XG5cdFx0cGFkZGluZzogMCAyMHB4O1xuXHRcdG1hcmdpbi10b3A6IC0yMHB4O1xuXHRcdGNsZWFyOiBib3RoO1xuXHR9XG5cblx0I3dwZm9ybXMtYWRtaW4tYWRkb25zLXNlYXJjaCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdGNvbG9yOiAjMzMzO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0cGFkZGluZzogN3B4IDEycHg7XG5cdFx0bWFyZ2luOiAtM3B4IDEwcHggMCAwO1xuXHRcdHdpZHRoOiAyMDBweDtcblx0XHRtaW4taGVpZ2h0OiAzNXB4O1xuXHRcdGZsb2F0OiByaWdodDtcblxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAjYmJiO1xuXHRcdH1cblx0fVxuXG5cdC5hZGRvbi1jb250YWluZXIge1xuXHRcdHBhZGRpbmc6IDAgMjBweDtcblx0XHRmbG9hdDogbGVmdDtcblx0XHR3aWR0aDogMzMuMzMzMzMzJTtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPDEyNTBweFwiKSB7XG5cdFx0XHR3aWR0aDogNTAlO1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXHRcdH1cblx0fVxuXG5cdGg0IHtcblx0XHRmb250LXNpemU6IDE3cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0fVxuXG5cdC5hZGRvbi1pdGVtIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdG1hcmdpbjogMCAwIDQwcHggMDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0bWFyZ2luOiAwIDBcblx0XHR9XG5cblx0XHRpbWcge1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2VlZTtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0bWF4LXdpZHRoOiA3NXB4O1xuXHRcdH1cblxuXHRcdGg1IHtcblx0XHRcdG1hcmdpbjogMCAwIDEwcHggMTAwcHg7XG5cdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDAgMCAwIDEwMHB4O1xuXHRcdH1cblxuXHRcdC5kZXRhaWxzIHtcblx0XHRcdHBhZGRpbmc6IDMwcHggMjBweDtcblxuXHRcdH1cblxuXHRcdC5hY3Rpb25zIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcblx0XHRcdHBhZGRpbmc6IDIwcHg7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRcdC5tc2cge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdFx0dG9wOiAwO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHR6LWluZGV4OiA5OTtcblx0XHRcdFx0cGFkZGluZzogMjBweDtcblx0XHRcdFx0ZGlzcGxheTogLXdlYmtpdC1ib3g7XG5cdFx0XHRcdGRpc3BsYXk6IC1tb3otYm94O1xuXHRcdFx0XHRkaXNwbGF5OiAtbXMtZmxleGJveDtcblx0XHRcdFx0ZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHQtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRcdC1tcy1hbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuXHRcdFx0XHQmLnN1Y2Nlc3Mge1xuXHRcdFx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLmVycm9yIHtcblx0XHRcdFx0XHRjb2xvcjogcmVkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnN0YXR1cyB7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdHBhZGRpbmctdG9wOiA4cHg7XG5cblx0XHRcdC5zdGF0dXMtaW5hY3RpdmUge1xuXHRcdFx0XHRjb2xvcjogcmVkO1xuXHRcdFx0fVxuXG5cdFx0XHQuc3RhdHVzLWRvd25sb2FkIHtcblx0XHRcdFx0Y29sb3I6ICM2NjY7XG5cdFx0XHR9XG5cblx0XHRcdC5zdGF0dXMtYWN0aXZlIHtcblx0XHRcdFx0Y29sb3I6ICRncmVlbjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQudXBncmFkZS1idXR0b24ge1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0XHRhIHtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdFx0d2lkdGg6IDE0MHB4O1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdHBhZGRpbmc6IDhweCA1cHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmFjdGlvbi1idXR0b24ge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXG5cdFx0XHRidXR0b24ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdFx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdFx0d2lkdGg6IDE0MHB4O1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdHBhZGRpbmc6IDhweCA1cHg7XG5cblx0XHRcdFx0Jjpob3Zlcixcblx0XHRcdFx0Ji5sb2FkaW5nIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZTllOWU5O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0LmZhIHtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDhweDtcblxuXHRcdFx0XHRcdCYuZmEtc3Bpbm5lciB7XG5cdFx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ji5zdGF0dXMtYWN0aXZlIHtcblxuXHRcdFx0XHRcdC5mYSB7XG5cdFx0XHRcdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYuc3RhdHVzLWluYWN0aXZlIHtcblxuXHRcdFx0XHRcdC5mYSB7XG5cdFx0XHRcdFx0XHRjb2xvcjogcmVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYuc3RhdHVzLWRvd25sb2FkIHtcblxuXHRcdFx0XHRcdC5mYSB7XG5cdFx0XHRcdFx0XHRjb2xvcjogIzk5OTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLmRpc2FibGVkIHtcblx0XHRcdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLmxvYWRpbmcge1xuXG5cdFx0XHRcdFx0LmZhIHtcblx0XHRcdFx0XHRcdGNvbG9yOiAjNjY2O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLy8gQWJvdXQgV1BGb3JtcyAtIGFkbWluLnBocD9wYWdlPXdwZm9ybXMtYWJvdXRcblxuJHBhZGRpbmctZGVmYXVsdDogMzBweDtcbiRib3JkZXI6IDFweCBzb2xpZCAjREREREREO1xuXG4vLyBAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcbi8vIFx0d2lkdGg6IDUwJTtcbi8vIH1cblxuLypcbid4cy1waG9uZSc6IDMyMHB4LFxuXHQncGhvbmUnOiA2MDBweCxcblx0J2lwYWQnOiA3NjhweCxcblx0J3RhYmxldCc6IDc4MnB4LFxuXHQnZGVza3RvcCc6IDk2MHB4LFxuKi9cblxuI3dwZm9ybXMtYWRtaW4tYWJvdXQge1xuXG5cdCosICo6OmJlZm9yZSwgKjo6YWZ0ZXIge1xuXHRcdC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHQtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0fVxuXG5cdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24ge1xuXHRcdG1hcmdpbjogMCAyMHB4IDIwcHg7XG5cdFx0cGFkZGluZzogJHBhZGRpbmctZGVmYXVsdDtcblx0XHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRcdGJvcmRlcjogJGJvcmRlcjtcblx0XHRsaW5lLWhlaWdodDogMjtcblxuXHRcdGgxLCBoMiwgaDMsIGg0LCBoNSB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdFx0cGFkZGluZy10b3A6IDA7XG5cdFx0XHRsaW5lLWhlaWdodDogMS42O1xuXHRcdH1cblxuXHRcdGgyIHtcblx0XHRcdGZvbnQtc2l6ZTogMjRweDtcblx0XHR9XG5cblx0XHRoMyB7XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAzMHB4O1xuXHRcdFx0Y29sb3I6ICMyMzI4MkM7XG5cdFx0fVxuXG5cdFx0dWwsIHAge1xuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblxuXHRcdFx0Ji5iaWdnZXJ7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRcdH1cblx0XHRcdCYuc21hbGxlciB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdH1cblxuXHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRociB7XG5cdFx0XHRtYXJnaW46ICRwYWRkaW5nLWRlZmF1bHQgMDtcblx0XHR9XG5cblx0XHRmaWd1cmUge1xuXHRcdFx0bWFyZ2luOiAwO1xuXG5cdFx0XHRpbWcge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdH1cblxuXHRcdFx0ZmlnY2FwdGlvbiB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdFx0Y29sb3I6ICM4ODg4ODg7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDVweDtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRsaW5lLWhlaWdodDogaW5pdGlhbDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tNDAge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAkcGFkZGluZy1kZWZhdWx0LzI7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogMjBweDtcblx0XHRcdH1cblx0XHR9XG5cdFx0LndwZm9ybXMtYWRtaW4tY29sdW1uLTYwIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLWRlZmF1bHQvMjtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8aXBhZFwiKSB7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHVsLmxpc3QtcGxhaW4ge1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cblx0XHRcdGxpIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR1bC5saXN0LWZlYXR1cmVzIHtcblx0XHRcdGxpIC5mYSB7XG5cdFx0XHRcdGNvbG9yOiAjMmE5YjM5O1xuXHRcdFx0XHRtYXJnaW46IDAgOHB4IDAgMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZmEtc3RhciB7Y29sb3I6IGdvbGR9XG5cblx0XHQubm8tbWFyZ2luIHttYXJnaW46IDAgIWltcG9ydGFudH1cblx0XHQubm8tcGFkZGluZyB7cGFkZGluZzogMCAhaW1wb3J0YW50fVxuXHRcdC5jZW50ZXJlZCB7dGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnR9XG5cdH1cblxuXHQud3Bmb3Jtcy1hZG1pbi1hYm91dC1zZWN0aW9uLWZpcnN0LWZvcm0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cblx0XHRAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYWRtaW4tYWJvdXQtc2VjdGlvbi1maXJzdC1mb3JtLXRleHQge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLWRlZmF1bHQ7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHRmbGV4OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24tZmlyc3QtZm9ybS12aWRlbyB7XG5cdFx0XHRpZnJhbWUge1xuXHRcdFx0XHRib3JkZXI6ICRib3JkZXI7XG5cdFx0XHR9XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogMjBweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQud3Bmb3Jtcy1hZG1pbi1hYm91dC1zZWN0aW9uLWhlcm8ge1xuXHRcdHBhZGRpbmc6IDA7XG5cblx0XHQud3Bmb3Jtcy1hZG1pbi1hYm91dC1zZWN0aW9uLWhlcm8tbWFpbixcblx0XHQud3Bmb3Jtcy1hZG1pbi1hYm91dC1zZWN0aW9uLWhlcm8tZXh0cmEge1xuXHRcdFx0cGFkZGluZzogJHBhZGRpbmctZGVmYXVsdDtcblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1hZG1pbi1hYm91dC1zZWN0aW9uLWhlcm8tZXh0cmEge1xuXG5cdFx0XHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tNTAge1xuXG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYWRtaW4tYWJvdXQtc2VjdGlvbi1oZXJvLW1haW4ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTtcblx0XHRcdGJvcmRlci1ib3R0b206ICRib3JkZXI7XG5cblx0XHRcdCYubm8tYm9yZGVyIHtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHRcdH1cblxuXHRcdFx0cCB7XG5cdFx0XHRcdGNvbG9yOiAjNjY2O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGgzLmNhbGwtdG8tYWN0aW9uIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IC0xMHB4O1xuXHRcdH1cblxuXHRcdHNwYW4ucHJpY2UtMjAtb2ZmIHtcblx0XHRcdGNvbG9yOiAjNkFCMjU1O1xuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24tc3F1YXNoZWQge1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cblx0XHQmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24tcG9zdCB7XG5cblx0XHRoMiB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAtMTBweDtcblx0XHR9XG5cblx0XHRoMyB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxNXB4O1xuXHRcdH1cblxuXHRcdHA6bGFzdC1vZi10eXBlIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDMwcHg7XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYWRtaW4tY29sdW1uLTIwIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDIwcHg7XG5cdFx0XHR3aWR0aDogYXV0bztcblxuXHRcdFx0aW1nIHtcblx0XHRcdFx0d2lkdGg6IDI3MHB4O1xuXHRcdFx0fVxuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYShcIjxpcGFkXCIpIHtcblx0XHRcdFx0d2lkdGg6IDIwJTtcblx0XHRcdFx0aW1nIHtcblx0XHRcdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdFx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1hZG1pbi1jb2x1bW4tODAge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAyMHB4O1xuXHRcdFx0d2lkdGg6IGNhbGMoMTAwJSAtIDIwcHggLSAyNzBweCk7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGlwYWRcIikge1xuXHRcdFx0XHR3aWR0aDogODAlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24tcG9zdC1saW5rIHtcblx0XHRcdHBhZGRpbmc6IDEwcHggJHBhZGRpbmctZGVmYXVsdC8yO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI0RGNzczOTtcblx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0bWFyZ2luLXRvcDogMTVweDtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNCODVBMUI7XG5cdFx0XHR9XG5cblx0XHRcdC5mYSB7XG5cdFx0XHRcdGNvbG9yOiAjRURCQTlFO1xuXHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogOHB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLWFkbWluLWFib3V0LXNlY3Rpb24tdGFibGUge1xuXG5cdFx0dGFibGUge1xuXHRcdFx0Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcblxuXHRcdFx0dHIge1xuXHRcdFx0XHR0ZCB7XG5cdFx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogJGJvcmRlcjtcblx0XHRcdFx0XHRib3JkZXItcmlnaHQ6ICRib3JkZXI7XG5cdFx0XHRcdFx0cGFkZGluZzogJHBhZGRpbmctZGVmYXVsdDtcblx0XHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXG5cdFx0XHRcdFx0JjpsYXN0LW9mLXR5cGUge1xuXHRcdFx0XHRcdFx0Ym9yZGVyLXJpZ2h0OiAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCY6bGFzdC1jaGlsZCB0ZCB7XG5cdFx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRwIHtcblx0XHRcdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRcdFx0YmFja2dyb3VuZC1zaXplOiAxNXB4IGF1dG87XG5cdFx0XHRcdGJhY2tncm91bmQtcG9zaXRpb246IDAgNnB4O1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cblx0XHRcdFx0Ji5mZWF0dXJlcy1mdWxsIHtcblx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWRlZmF1bHQ7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltYWdlcy9hYm91dC9pY29uLWZ1bGwuc3ZnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQmLmZlYXR1cmVzLW5vbmUge1xuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDogJHBhZGRpbmctZGVmYXVsdDtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL2Fib3V0L2ljb24tbm9uZS5zdmcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdCYuZmVhdHVyZXMtcGFydGlhbCB7XG5cdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiAkcGFkZGluZy1kZWZhdWx0O1xuXHRcdFx0XHRcdGJhY2tncm91bmQtcG9zaXRpb246IC0zcHggMDtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLXNpemU6IDIzcHggYXV0bztcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL2Fib3V0L2ljb24tcGFydGlhbC5zdmcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtYWRtaW4tYWJvdXQtc2VjdGlvbi1oZXJvLW1haW4ge1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHRcdGgzIHtcblx0XHRcdFx0cGFkZGluZzogJHBhZGRpbmctZGVmYXVsdCAkcGFkZGluZy1kZWZhdWx0ICRwYWRkaW5nLWRlZmF1bHQgJHBhZGRpbmctZGVmYXVsdCoyO1xuXHRcdFx0fVxuXHRcdFx0LndwZm9ybXMtYWRtaW4tY29sdW1uLTMzOmZpcnN0LWNoaWxkIGgzIHtcblx0XHRcdFx0cGFkZGluZzogJHBhZGRpbmctZGVmYXVsdDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQjd3Bmb3Jtcy1hZG1pbi1hZGRvbnMge1xuXHRcdHBhZGRpbmc6IDAgJHBhZGRpbmctZGVmYXVsdDtcblxuXHRcdC5hZGRvbi1jb250YWluZXIge1xuXHRcdFx0cGFkZGluZzogMCAxMHB4O1xuXHRcdH1cblxuXHRcdC5hZGRvbi1pdGVtIHtcblxuXHRcdFx0LmRldGFpbHMge1xuXHRcdFx0XHRwYWRkaW5nOiAyMHB4O1xuXHRcdFx0fVxuXG5cdFx0XHRpbWcge1xuXHRcdFx0XHRwYWRkaW5nOiAxMHB4O1xuXG5cdFx0XHRcdCZbc3JjKj1cIi1taVwiXSB7XG5cdFx0XHRcdFx0cGFkZGluZzogMTNweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQuYWN0aW9uLWJ1dHRvbiAuYnV0dG9uIHtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDI2cHg7XG5cdFx0XHRcdGhlaWdodDogMjhweDtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRwYWRkaW5nOiAwIDEwcHggMXB4O1xuXHRcdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHRcdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjY2NjY2NjO1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAjZjdmN2Y3O1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDFweCAwICNjY2NjY2M7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cblx0XHRcdFx0Jjpob3ZlciwgJjpmb2N1cyAge1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6ICNmYWZhZmE7XG5cdFx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjOTk5O1xuXHRcdFx0XHRcdGNvbG9yOiAjMjMyODJkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ji5idXR0b24tcHJpbWFyeSB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogIzAwODViYTtcblx0XHRcdFx0XHRib3JkZXItY29sb3I6ICMwMDczYWEgIzAwNjc5OSAjMDA2Nzk5O1xuXHRcdFx0XHRcdGJveC1zaGFkb3c6IDAgMXB4IDAgIzAwNjc5OTtcblx0XHRcdFx0XHRjb2xvcjogI2ZmZjtcblx0XHRcdFx0XHR0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAjMDA2Nzk5LCAxcHggMCAxcHggIzAwNjc5OSwgMCAxcHggMXB4ICMwMDY3OTksIC0xcHggMCAxcHggIzAwNjc5OTtcblxuXHRcdFx0XHRcdCY6aG92ZXIsICY6Zm9jdXMge1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogIzAwOGVjMjtcblx0XHRcdFx0XHRcdGJvcmRlci1jb2xvcjogIzAwNjc5OTtcblx0XHRcdFx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC5mYS1zcGlubmVyIHtcblx0XHRcdFx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYuYnV0dG9uLXNlY29uZGFyeSB7XG5cdFx0XHRcdFx0Y29sb3I6ICM1NTU7XG5cdFx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjY2NjY2NjO1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6ICNmN2Y3Zjc7XG5cdFx0XHRcdFx0Ym94LXNoYWRvdzogMCAxcHggMCAjY2NjY2NjO1xuXG5cdFx0XHRcdFx0Jjpob3ZlciwgJjpmb2N1cyAge1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogI2ZhZmFmYTtcblx0XHRcdFx0XHRcdGJvcmRlci1jb2xvcjogIzk5OTtcblx0XHRcdFx0XHRcdGNvbG9yOiAjMjMyODJkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYuZGlzYWJsZWQge1xuXHRcdFx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLy8gU2V0dGluZ3MgLSBhZG1pbi5waHA/cGFnZT13cGZvcm1zLXNldHRpbmdzXG4vLyBUb29scyAtIGFkbWluLnBocD9wYWdlPXdwZm9ybXMtdG9vbHNcbi53cGZvcm1zLWFkbWluLXNldHRpbmdzIHtcblxuXHQqLFxuXHQqOjpiZWZvcmUsXG5cdCo6OmFmdGVyIHtcblx0XHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0LW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdH1cblxuXHQvLyBTZXR0aW5nIHJvd3MsIGVnIGZpZWxkIHJvdy5cblx0LndwZm9ybXMtc2V0dGluZy1yb3cge1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTRlNGU0O1xuXHRcdHBhZGRpbmc6IDMwcHggMDtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuMztcblxuXHRcdCY6Zmlyc3Qtb2YtdHlwZSB7XG5cdFx0XHRwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50O1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPHRhYmxldFwiKSB7XG5cdFx0XHRwYWRkaW5nOiAyMHB4IDA7XG5cdFx0fVxuXG5cdFx0Ly8gU2VjdGlvbiBoZWFkaW5nLlxuXHRcdCYuc2VjdGlvbi1oZWFkaW5nIHtcblx0XHRcdHBhZGRpbmc6IDIwcHggMDtcblxuXHRcdFx0Ji5uby1kZXNjIHtcblx0XHRcdFx0aDQge1xuXHRcdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQud3Bmb3Jtcy1zZXR0aW5nLWZpZWxkIHtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRtYXgtd2lkdGg6IDEwMDBweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBUb29scyBmdWxsIHdpZHRoIGZpZWxkcy5cblx0XHQmLnRvb2xzIHtcblxuXHRcdFx0cCxcblx0XHRcdHA6Zmlyc3Qtb2YtdHlwZXtcblx0XHRcdFx0bWFyZ2luOiAwIDAgMTZweCAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENoZWNrYm94IHNldHRpbmdzIGZpZWxkLlxuXHRcdCYud3Bmb3Jtcy1zZXR0aW5nLXJvdy1jaGVja2JveCB7XG5cblx0XHRcdGlucHV0W3R5cGU9Y2hlY2tib3hdIHtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdG1hcmdpbjogMXB4IDAgMCAwO1xuXHRcdFx0fVxuXG5cdFx0XHQuZGVzYyB7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDAgMzBweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBMaWNlbnNlIHNldHRpbmdzIGZpZWxkLlxuXHRcdCYud3Bmb3Jtcy1zZXR0aW5nLXJvdy1saWNlbnNlIHtcblxuXHRcdFx0LndwZm9ybXMtc2V0dGluZy1sYWJlbCB7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiA4cHg7XG5cdFx0XHR9XG5cblx0XHRcdHAudHlwZSB7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDEycHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gVGV4dC9udW1iZXIgc2V0dGluZ3MgZmllbGQuXG5cdFx0Ji53cGZvcm1zLXNldHRpbmctcm93LXRleHQsXG5cdFx0Ji53cGZvcm1zLXNldHRpbmctcm93LW51bWJlciB7XG5cblx0XHRcdC53cGZvcm1zLXNldHRpbmctbGFiZWwge1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogOHB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNlbGVjdCBzZXR0aW5ncyBmaWVsZC5cblx0XHQmLndwZm9ybXMtc2V0dGluZy1yb3ctc2VsZWN0IHtcblxuXHRcdFx0LndwZm9ybXMtc2V0dGluZy1sYWJlbCB7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiA4cHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmFkaW8gc2V0dGluZ3MgZmllbGQuXG5cdFx0Ji53cGZvcm1zLXNldHRpbmctcm93LXJhZGlvIHtcblxuXHRcdFx0LndwZm9ybXMtc2V0dGluZy1maWVsZCB7XG5cblx0XHRcdFx0aW5wdXRbdHlwZT1yYWRpb10ge1xuXHRcdFx0XHRcdG1hcmdpbjogLTNweCAxMHB4IDAgMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxhYmVsIHtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDMwcHg7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHQvLyBFbWFpbCBUZW1wbGF0ZSBzZXR0aW5nIGZpZWxkLlxuXHRcdCYjd3Bmb3Jtcy1zZXR0aW5nLXJvdy1lbWFpbC10ZW1wbGF0ZSB7XG5cblx0XHRcdC53cGZvcm1zLXNldHRpbmctZmllbGQge1xuXG5cdFx0XHRcdGxhYmVsOmJlZm9yZSB7XG5cdFx0XHRcdFx0Y29udGVudDogXCIgXCI7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0d2lkdGg6IDE1NXB4O1xuXHRcdFx0XHRcdGhlaWdodDogMTgwcHg7XG5cdFx0XHRcdFx0bWFyZ2luOiAwIDAgMTBweCAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Lm9wdGlvbi1kZWZhdWx0OmJlZm9yZSB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9zZXR0aW5ncy1lbWFpbC1odG1sLnBuZykgY2VudGVyIGNlbnRlcjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC5vcHRpb24tbm9uZTpiZWZvcmUge1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvc2V0dGluZ3MtZW1haWwtcGxhaW50ZXh0LnBuZykgY2VudGVyIGNlbnRlcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJhZGlvIHNldHRpbmdzIGZpZWxkLlxuXHRcdCYud3Bmb3Jtcy1zZXR0aW5nLXJvdy1pbWFnZSB7XG5cblx0XHRcdC53cGZvcm1zLXNldHRpbmctZmllbGQge1xuXG5cdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0bWFyZ2luOiAwIDAgMjBweCAwO1xuXHRcdFx0XHRcdG1heC13aWR0aDogNDAwcHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb2xvciBwaWNrZXIgc2V0dGluZ3MgZmllbGQuXG5cdFx0Ji53cGZvcm1zLXNldHRpbmctcm93LWNvbG9yIHtcblxuXHRcdFx0LndwZm9ybXMtY29sb3ItcGlja2VyIHtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiA0MHB4O1xuXHRcdFx0fVxuXG5cdFx0XHQubWluaWNvbG9ycy1pbnB1dC1zd2F0Y2gge1xuXHRcdFx0XHR0b3A6IDdweDtcblx0XHRcdFx0bGVmdDogN3B4O1xuXHRcdFx0XHRoZWlnaHQ6IDIxcHg7XG5cdFx0XHRcdHdpZHRoOiAyMXB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gR2VuZXJhbCBlbGVtZW50cy5cblx0XHRoNCB7XG5cdFx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0bWFyZ2luOiAwIDAgNnB4IDA7XG5cdFx0fVxuXG5cdFx0aDMge1xuXHRcdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdG1hcmdpbjogMCAwIDIwcHggMDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdG1hcmdpbjogMTJweCAwIDA7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zO1xuXG5cdFx0XHQmOmZpcnN0LW9mLXR5cGUge1xuXHRcdFx0XHRtYXJnaW46IDhweCAwIDA7XG5cdFx0XHR9XG5cblx0XHRcdCYuZGVzYyB7XG5cdFx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdFx0Y29sb3I6ICM2NjY7XG5cdFx0XHR9XG5cblx0XHRcdCYuZGlzY291bnQtbm90ZSB7XG5cdFx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdFx0Y29sb3I6ICM2NjY7XG5cblx0XHRcdFx0c3Ryb25nIHtcblx0XHRcdFx0XHRjb2xvcjogZ3JlZW47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGb3JtIGVsZW1lbnRzLlxuXHRcdGlucHV0W3R5cGU9dGV4dF0sXG5cdFx0aW5wdXRbdHlwZT1udW1iZXJdLFxuXHRcdGlucHV0W3R5cGU9cGFzc3dvcmRdIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdGNvbG9yOiAjMzMzO1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRcdHBhZGRpbmc6IDdweCAxMnB4O1xuXHRcdFx0bWFyZ2luOiAwIDEwcHggMCAwO1xuXHRcdFx0d2lkdGg6IDQwMHB4O1xuXHRcdFx0bWluLWhlaWdodDogMzVweDtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI8ZGVza3RvcFwiKSB7XG5cdFx0XHRcdHdpZHRoOiAzMDBweDtcblx0XHRcdH1cblxuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogI2JiYjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpbnB1dFt0eXBlPW51bWJlcl0ge1xuXHRcdFx0d2lkdGg6IDEwMHB4O1xuXHRcdH1cblxuXHRcdHRleHRhcmVhIHtcblxuXHRcdH1cblxuXHRcdGJ1dHRvbiB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdFx0fVxuXG5cdFx0LmNob2ljZXNqcy1zZWxlY3Qtd3JhcCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1heC13aWR0aDogNDAwcHg7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPGRlc2t0b3BcIikge1xuXHRcdFx0XHR3aWR0aDogMzAwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnByb2dyZXNzLWJhciB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJG9yYW5nZTtcblx0XHRcdGhlaWdodDogMzBweDtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0bWFyZ2luOiAwIDAgMTZweCAwO1xuXG5cdFx0XHQmLmNvbXBsZXRlIHtcblx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZWVuO1xuXG5cdFx0XHRcdC5iYXIge1xuXHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbjtcblxuXHRcdFx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRcdFx0Y29udGVudDogbm9uZTtcblx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC5iYXIge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0YmFja2dyb3VuZDogJG9yYW5nZTtcblx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggMC41cyBlYXNlLWluLW91dDtcblx0XHRcdFx0LW1vei10cmFuc2l0aW9uOiB3aWR0aCAwLjVzIGVhc2UtaW4tb3V0O1xuXHRcdFx0XHQtby10cmFuc2l0aW9uOiB3aWR0aCAwLjVzIGVhc2UtaW4tb3V0O1xuXHRcdFx0XHR0cmFuc2l0aW9uOiB3aWR0aCAwLjVzIGVhc2UtaW4tb3V0O1xuXG5cdFx0XHRcdEAtd2Via2l0LWtleWZyYW1lcyBwcm9ncmVzcyB7XG5cdFx0XHRcdFx0dG8geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA2MHB4IDA7IH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdEAtbW96LWtleWZyYW1lcyBwcm9ncmVzcyB7XG5cdFx0XHRcdCAgdG8geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA2MHB4IDA7IH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdEBrZXlmcmFtZXMgcHJvZ3Jlc3Mge1xuXHRcdFx0XHQgIHRvIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogNjBweCAwOyB9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0XHRjb250ZW50OiAnJztcblx0XHRcdFx0XHRkaXNwbGF5OmJsb2NrO1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdFx0bGVmdDogMDtcblx0XHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRcdFx0LXdlYmtpdC1hbmltYXRpb246IHByb2dyZXNzIDFzIGxpbmVhciBpbmZpbml0ZTtcblx0XHRcdFx0XHQtbW96LWFuaW1hdGlvbjogcHJvZ3Jlc3MgMXMgbGluZWFyIGluZmluaXRlO1xuXHRcdFx0XHRcdGFuaW1hdGlvbjogcHJvZ3Jlc3MgMXMgbGluZWFyIGluZmluaXRlO1xuXHRcdFx0XHRcdGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLXNpemU6IDYwcHggNjBweDtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJvdyBsYWJlbCAobGVmdCkuXG5cdC53cGZvcm1zLXNldHRpbmctbGFiZWwge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdHdpZHRoOiAyMDBweDtcblx0XHRwYWRkaW5nOiAwO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI8dGFibGV0XCIpIHtcblx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMTVweDtcblx0XHR9XG5cblx0XHRsYWJlbCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUm93IGZpZWxkIChyaWdodCkuXG5cdC53cGZvcm1zLXNldHRpbmctZmllbGQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbjogMCAwIDAgMjAwcHg7XG5cdFx0bWF4LXdpZHRoOiA4MDBweDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPHRhYmxldFwiKSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0cC5zdWJtaXQge1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAyNXB4IDA7XG5cdH1cblxuXHQvLyBHZW5lcmljIGluZm8vY29kZSBpbmZvcm1hdGlvbi5cblx0LmluZm8tYXJlYSxcblx0LnByZS1lcnJvciB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiAxMDAwcHg7XG5cdFx0aGVpZ2h0OiA0NTBweDtcblx0XHRmb250LWZhbWlseTogTWVubG8sTW9uYWNvLG1vbm9zcGFjZTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG5cdFx0d2hpdGUtc3BhY2U6IHByZTtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0XHRwYWRkaW5nOiAyMHB4O1xuXHR9XG5cblx0LnByZS1lcnJvciB7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdG1heC1oZWlnaHQ6IDI1MHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDIwcHg7XG5cdH1cblxuXHQvLyBDaGVja2JveCBtdWx0aS1zZWxlY3QgY29sdW1ucy5cblx0LmNoZWNrYm94LW11bHRpc2VsZWN0LWNvbHVtbnMge1xuXHRcdG1heC13aWR0aDogNjAwcHg7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRjb250ZW50OiBcIi5cIjtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0aGVpZ2h0OiAwO1xuXHRcdFx0bGluZS1oZWlnaHQ6IDA7XG5cdFx0XHRmb250LXNpemU6IDA7XG5cdFx0XHRjbGVhcjogYm90aDtcblx0XHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0XHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0fVxuXG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0Y29udGVudDogXCJcXGYwZWNcIjtcblx0XHRcdGNvbG9yOiAjOTk5O1xuXHRcdFx0Zm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgMjBweC8xIEZvbnRBd2Vzb21lO1xuXHRcdFx0dGV4dC1yZW5kZXJpbmc6IGF1dG87XG5cdFx0XHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0XHRcdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDEzMHB4O1xuXHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0bWFyZ2luOiAwIDAgMCAtMTBweDtcblx0XHR9XG5cblx0XHQuaGVhZGVyIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwIDAgNXB4IDA7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0fVxuXG5cdFx0LmZpcnN0LWNvbHVtbixcblx0XHQuc2Vjb25kLWNvbHVtbiB7XG5cdFx0XHR3aWR0aDogNDUlO1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0fVxuXG5cdFx0LmZpcnN0LWNvbHVtbiB7XG5cblx0XHR9XG5cblx0XHQuc2Vjb25kLWNvbHVtbiB7XG5cdFx0XHRmbG9hdDogcmlnaHQ7XG5cblx0XHRcdHVsIHtcblx0XHRcdFx0bGkge1xuXHRcdFx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR1bCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2RkZDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdGhlaWdodDogMjUwcHg7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuXHRcdFx0bGkge1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggI2VlZSBzb2xpZDtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRmb250LXNpemU6IDE0cHg7XG5cblx0XHRcdFx0bGFiZWwge1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdHBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDMycHg7XG5cdFx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHRcdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcblxuXHRcdFx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG9yYW5nZTtcblx0XHRcdFx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwiXFxmMGM4XCI7XG5cdFx0XHRcdFx0XHRjb2xvcjogI2RkZDtcblx0XHRcdFx0XHRcdGZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIDE2cHgvMSBGb250QXdlc29tZTtcblx0XHRcdFx0XHRcdHRleHQtcmVuZGVyaW5nOiBhdXRvO1xuXHRcdFx0XHRcdFx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdFx0XHRcdFx0XHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXHRcdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRcdFx0dG9wOiAxMnB4O1xuXHRcdFx0XHRcdFx0bGVmdDogMTBweDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQmLmNoZWNrZWQge1xuXHRcdFx0XHRcdFx0b3BhY2l0eTogMC42O1xuXG5cdFx0XHRcdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwiXFxmMTRhXCI7XG5cdFx0XHRcdFx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aW5wdXQge1xuXHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQuYWxsIHtcblx0XHRcdGNvbG9yOiAjOTk5O1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0bWFyZ2luOiAxMHB4IDAgMDtcblx0XHR9XG5cdH1cblxuXHQvLyBPdGhlciBJbXBvcnRlcnMuIChUb29scylcblx0I3dwZm9ybXMtaW1wb3J0ZXItYW5hbHl6ZSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdC5wcm9jZXNzLWNvdW50LFxuXHRcdHAge1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdH1cblxuXHRcdC51cGdyYWRlIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cblx0XHRcdGg1IHtcblx0XHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0XHRtYXJnaW46IDMwcHggMCAyMHB4IDA7XG5cdFx0XHR9XG5cblx0XHRcdGhyIHtcblx0XHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U0ZTRlNDtcblx0XHRcdFx0bWFyZ2luOiA0MHB4IDA7XG5cdFx0XHR9XG5cblx0XHRcdC53cGZvcm1zLWJ0biB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcblx0XHRcdH1cblxuXHRcdFx0dWwge1xuXHRcdFx0XHRsaSB7XG5cdFx0XHRcdFx0bGlzdC1zdHlsZS10eXBlOiBkaXNjO1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAxNHB4O1xuXG5cdFx0XHRcdFx0Ji5mb3JtIHtcblx0XHRcdFx0XHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQjd3Bmb3Jtcy1pbXBvcnRlci1wcm9jZXNzIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXG5cdFx0LnByb2Nlc3MtY291bnQsXG5cdFx0LnByb2Nlc3MtY29tcGxldGVkIHtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHR9XG5cblx0XHQucHJvY2Vzcy1jb21wbGV0ZWQge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQuc3RhdHVzIHtcblx0XHRcdG1hcmdpbjogMjBweCAwIDMwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2RkZDtcblx0XHRcdG1heC1oZWlnaHQ6IDgwMHB4O1xuXHRcdFx0b3ZlcmZsb3cteTogc2Nyb2xsO1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdFx0Lml0ZW0td3JhcCB7XG5cblx0XHRcdH1cblxuXHRcdFx0Lml0ZW0ge1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcblx0XHRcdFx0cGFkZGluZzogMjBweDtcblxuXHRcdFx0XHQmOmxhc3Qtb2YtdHlwZSB7XG5cdFx0XHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0XHRcdG1hcmdpbjogMTJweCAwIDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR1bCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0XHRcdG1hcmdpbjogMTJweCAwIDAgMTZweDtcblxuXHRcdFx0XHRcdGxpIHtcblx0XHRcdFx0XHRcdGxpc3Qtc3R5bGU6IGRpc2M7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0LnN0YXR1cy1pY29uIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdFx0bWFyZ2luOiAwIDEwcHggMCAwO1xuXG5cdFx0XHRcdFx0Ji5mYS1pbmZvLWNpcmNsZSB7XG5cdFx0XHRcdFx0XHRjb2xvcjogIzAwYTBkMlxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYuZmEtY2hlY2sge1xuXHRcdFx0XHRcdFx0Y29sb3I6ICM0NmI0NTBcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQmLmZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlIHtcblx0XHRcdFx0XHRcdGNvbG9yOiAjZmZiOTAwXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ji5mYS10aW1lcyxcblx0XHRcdFx0XHQmLmZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB7XG5cdFx0XHRcdFx0XHRjb2xvcjogcmVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC5uYW1lIHtcblx0XHRcdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQuYWN0aW9ucyB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0XHRcdGZsb2F0OiByaWdodDtcblxuXHRcdFx0XHRcdC5zZXAge1xuXHRcdFx0XHRcdFx0Y29sb3I6ICNkZGQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gTGl0ZSB1cGdyYWRlLlxuXHQuc2V0dGluZ3MtbGl0ZS1jdGF7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGFkYWRhO1xuXHRcdHBhZGRpbmc6IDI1cHggMjBweDtcblx0XHRtYXJnaW46IDEwcHggMCAwIDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0LmRpc21pc3Mge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAxMHB4O1xuXHRcdFx0cmlnaHQ6IDEwcHg7XG5cdFx0XHRjb2xvcjogIzY2Njtcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHR9XG5cblx0XHRoNSB7XG5cdFx0XHRtYXJnaW46IDAgMCAxNnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHR9XG5cblx0XHRoNiB7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0bWFyZ2luOiAwIDAgMTZweDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdGNvbG9yOiAjNTU1O1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0bWFyZ2luOiAwIDAgMTZweDtcblxuXHRcdFx0JjpsYXN0LW9mLXR5cGUge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR9XG5cblx0XHRcdGEge1xuXHRcdFx0XHRjb2xvcjogJG9yYW5nZTtcblxuXHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRjb2xvcjogJGRhcmtvcmFuZ2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR1bCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0d2lkdGg6IDUwJTtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYShcIjw9cGhvbmVcIikge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdGxpIHtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRwYWRkaW5nOiAwIDAgMnB4IDE2cHg7XG5cdFx0XHRcdGNvbG9yOiAjNTU1O1xuXHRcdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdFx0Y29udGVudDogJysnO1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHR0b3A6IC0xcHg7XG5cdFx0XHRcdFx0bGVmdDogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5saXN0IHtcblx0XHRcdG1hcmdpbjogMCAwIDE2cHggMDtcblx0XHRcdG92ZXJmbG93OiBhdXRvO1xuXHRcdFx0bWF4LXdpZHRoOiA5MDBweDtcblx0XHR9XG5cblx0XHQuZ3JlZW4ge1xuXHRcdFx0Y29sb3I6ICMyMTg5MDA7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdH1cblxuXHRcdC5mYS1zdGFyIHtcblx0XHRcdGNvbG9yOiAjZmY5ODJkO1xuXHRcdH1cblx0fVxufVxuIiwiLy8gSW50ZWdyYXRpb25zIHRhYiBjb250ZW50LlxuLy8gTGVnYWN5IENTUyBhbmQgc2hvdWxkIGJlIGNsZWFuZWQgdXAgd2hlbiB0aW1lIHBlcm1pdHMuXG4jd3Bmb3Jtcy1zZXR0aW5ncy1wcm92aWRlcnMge1xuXG5cdC53cGZvcm1zLXNldHRpbmdzLXByb3ZpZGVyIHtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcblx0XHRwYWRkaW5nOiAzMHB4IDA7XG5cblx0XHQmLmZvY3VzLW91dCB7XG5cdFx0XHRvcGFjaXR5OiAwLjQ7XG5cdFx0fVxuXHR9XG5cblx0LndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItaGVhZGVyIHtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0bWF4LXdpZHRoOiAxMDAwcHg7XG5cdH1cblxuXHQud3Bmb3Jtcy1zZXR0aW5ncy1wcm92aWRlci1sb2dvIHtcblx0XHRmbG9hdDogbGVmdDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHQuZmEge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHRtYXJnaW46IC05cHggMCAwIDA7XG5cdFx0XHRsZWZ0OiAxMHB4O1xuXHRcdFx0Y29sb3I6ICM2NjY7XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0fVxuXG5cdFx0aW1nIHtcblx0XHRcdGJhY2tncm91bmQ6ICNmZmY7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdFx0bWF4LXdpZHRoOiA5MHB4O1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW46IDAgMCAwIDQwcHg7XG5cdFx0fVxuXHR9XG5cblx0LndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItaW5mbyB7XG5cdFx0bWFyZ2luOiAwIDAgMCAxNjBweDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0cGFkZGluZzogMjBweCAwIDA7XG5cblx0XHRoMyB7XG5cdFx0XHRtYXJnaW46IDAgMCAxMHB4IDA7XG5cdFx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdH1cblxuXHRcdC5jb25uZWN0ZWQtaW5kaWNhdG9yIHtcblx0XHRcdGNvbG9yOiAjODNjMTFmO1xuXHRcdFx0d2lkdGg6IDEzNXB4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgIzgzYzExZjtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDRweDtcblx0XHRcdHBhZGRpbmc6IDhweCAxNHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAyOHB4O1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5jb25uZWN0ZWQgLndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItaW5mbyAuY29ubmVjdGVkLWluZGljYXRvciB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQud3Bmb3Jtcy1zZXR0aW5ncy1wcm92aWRlci1hY2NvdW50cyB7XG5cdFx0bWFyZ2luOiAwIDAgMCAxNjBweDtcblx0XHRkaXNwbGF5OiBub25lO1xuXHRcdG1heC13aWR0aDogODQwcHg7XG5cdH1cblxuXHQuZm9jdXMtaW4gLndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItYWNjb3VudHMge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0LndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItYWNjb3VudHMtbGlzdCB1bCB7XG5cdFx0cGFkZGluZzogMDtcblx0XHRtYXJnaW46IDA7XG5cblx0XHRsaSB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDEwcHggMDtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblxuXHRcdFx0JjpmaXJzdC1vZi10eXBlIHtcblx0XHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG5cdFx0XHR9XG5cblx0XHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRzcGFuLmxhYmVsIHtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0d2lkdGg6IDUwJTtcblx0XHR9XG5cblx0XHRzcGFuLmRhdGUge1xuXHRcdFx0Y29sb3I6ICM5OTk7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdHdpZHRoOiAzNSU7XG5cdFx0fVxuXG5cdFx0c3Bhbi5yZW1vdmUge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0d2lkdGg6IDE1JTtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0XG5cdFx0fVxuXHR9XG5cblx0LndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItYWNjb3VudHMtY29ubmVjdCB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0XHRwYWRkaW5nOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEJsdWU7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGJsdWU7XG5cblx0XHRpbnB1dFt0eXBlPXRleHRdIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdGNvbG9yOiAjMzMzO1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRwYWRkaW5nOiA3cHggMTJweDtcblx0XHRcdG1hcmdpbjogNXB4IDA7XG5cdFx0XHR3aWR0aDogNDAwcHg7XG5cdFx0XHRtaW4taGVpZ2h0OiAzNXB4O1xuXG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjYmJiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5mb2N1cy1pbiAud3Bmb3Jtcy1zZXR0aW5ncy1wcm92aWRlci1hY2NvdW50cy1jb25uZWN0ICB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQud3Bmb3Jtcy1zZXR0aW5ncy1wcm92aWRlci1hY2NvdW50cy1jb25uZWN0IC5mYSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC53cGZvcm1zLXNldHRpbmdzLXByb3ZpZGVyLWFjY291bnRzLWNvbm5lY3QgcCxcblx0LndwZm9ybXMtc2V0dGluZ3MtcHJvdmlkZXItYWNjb3VudHMgcCB7XG5cdFx0bWFyZ2luOiAwIDAgMTVweCAwO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0fVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBR0FB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QkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLGFBQWE7Q0FBRTs7QUFDbkUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxhQUFhO0NBQUU7O0FBQ25FLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsYUFBYTtDQUFFOztBQUNuRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFFBQVE7Q0FBRTs7QUFDOUQsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJBQW1CLEVBQUUsWUFBWTtDQUFFOztBQUNsRSxBQUFBLGFBQWEsQUFBQSxnQkFBZ0IsQ0FBQztFQUFDLG1CQUFtQixFQUFFLFlBQVk7Q0FBRTs7QUFDbEUsQUFBQSxhQUFhLEFBQUEsZ0JBQWdCLENBQUM7RUFBQyxtQkFBbUIsRUFBRSxZQUFZO0NBQUU7O0FBQ2xFLEFBQUEsYUFBYSxBQUFBLGdCQUFnQixDQUFDO0VBQUMsbUJB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 */
assets/css/admin.min.css CHANGED
@@ -1 +1 @@
1
- .choices{position:relative;margin-bottom:24px;font-size:16px}.choices:focus{outline:none}.choices:last-child{margin-bottom:0}.choices.is-disabled .choices__inner,.choices.is-disabled .choices__input{background-color:#EAEAEA;cursor:not-allowed;user-select:none}.choices.is-disabled .choices__item{cursor:not-allowed}.choices[data-type*="select-one"]{cursor:pointer}.choices[data-type*="select-one"] .choices__inner{padding-bottom:3.0px}.choices[data-type*="select-one"] .choices__input{display:block;width:100% !important;padding:10px !important;border-bottom:1px solid #DDDDDD !important;background-color:#FFFFFF;margin:0 !important}.choices[data-type*="select-one"] .choices__button{background-image:url("../images/cross-inverse.svg");padding:0;background-size:8px;height:100%;position:absolute;top:50%;right:0;margin-top:-10px;margin-right:25px;height:20px;width:20px;border-radius:10em;opacity:.5}.choices[data-type*="select-one"] .choices__button:hover,.choices[data-type*="select-one"] .choices__button:focus{opacity:1}.choices[data-type*="select-one"] .choices__button:focus{box-shadow:0px 0px 0px 2px #0e6cad}.choices[data-type*="select-one"]:after{content:"";height:0;width:0;border-style:solid;border-color:#333333 transparent transparent transparent;border-width:5px;position:absolute;right:11.5px;top:50%;margin-top:-2.5px;pointer-events:none}.choices[data-type*="select-one"].is-open:after{border-color:transparent transparent #333333 transparent;margin-top:-7.5px}.choices[data-type*="select-one"][dir="rtl"]:after{left:11.5px;right:auto}.choices[data-type*="select-one"][dir="rtl"] .choices__button{right:auto;left:0;margin-left:25px;margin-right:0}.choices[data-type*="select-multiple"]:after{content:"";height:0;width:0;border-style:solid;border-color:#333333 transparent transparent transparent;border-width:5px;position:absolute;right:11.5px;top:18px;margin-top:-2.5px;pointer-events:none}.choices[data-type*="select-multiple"].is-open:after{border-color:transparent transparent #333333 transparent;margin-top:-7.5px}.choices[data-type*="select-multiple"] .choices__inner,.choices[data-type*="text"] .choices__inner{cursor:text}.choices[data-type*="select-multiple"] .choices__button,.choices[data-type*="text"] .choices__button{position:relative;display:inline-block;margin-top:0;margin-right:-4px;margin-bottom:0;margin-left:8px;padding-left:16px;border-left:1px solid #0a4f7e;background-image:url("../images/cross.svg");background-size:8px;width:8px;line-height:1;opacity:.75}.choices[data-type*="select-multiple"] .choices__button:hover,.choices[data-type*="select-multiple"] .choices__button:focus,.choices[data-type*="text"] .choices__button:hover,.choices[data-type*="text"] .choices__button:focus{opacity:1}.choices__inner{display:inline-block;vertical-align:top;width:100%;background-color:#fff;padding:4px 7.5px 1px;border:1px solid #DDDDDD;border-radius:3px;font-size:14px;min-height:35px;overflow:hidden}.is-focused .choices__inner,.is-open .choices__inner{border-color:#b7b7b7}.is-open .choices__inner{border-radius:3px 3px 0 0}.is-flipped.is-open .choices__inner{border-radius:0 0 3px 3px}.choices__list{margin:0;padding-left:0;list-style:none}.choices__list--single{display:inline-block;padding:4px 16px 4px 4px;width:100%}[dir="rtl"] .choices__list--single{padding-right:4px;padding-left:16px}.choices__list--single .choices__item{width:100%}.choices__list--multiple{display:inline}.choices__list--multiple .choices__item{display:inline-block;vertical-align:middle;border-radius:3px;padding:3px 10px;font-size:12px;font-weight:500;margin-right:4px;margin-top:0px;margin-bottom:3px;background-color:#0e6cad;border:1px solid #0c5d95;color:#FFFFFF;word-break:break-all}.choices__list--multiple .choices__item[data-deletable]{padding-right:5px}[dir="rtl"] .choices__list--multiple .choices__item{margin-right:0;margin-left:3.75px}.choices__list--multiple .choices__item.is-highlighted{background-color:#0c5d95;border:1px solid #0a4f7e}.is-disabled .choices__list--multiple .choices__item{background-color:#aaaaaa;border:1px solid #919191}.choices__list--dropdown{display:none;z-index:1;position:absolute;width:100%;background-color:#FFFFFF;border:1px solid #DDDDDD;top:100%;margin-top:-1px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;overflow:hidden;word-break:break-all}.choices__list--dropdown.is-active{display:block}.is-open .choices__list--dropdown{border-color:#b7b7b7}.is-flipped .choices__list--dropdown{top:auto;bottom:100%;margin-top:0;margin-bottom:-1px;border-radius:.25rem .25rem 0 0}.choices__list--dropdown .choices__list{position:relative;max-height:300px;overflow:auto;-webkit-overflow-scrolling:touch;will-change:scroll-position}.choices__list--dropdown .choices__item{position:relative;padding:10px;font-size:14px}[dir="rtl"] .choices__list--dropdown .choices__item{text-align:right}@media (min-width: 640px){.choices__list--dropdown .choices__item--selectable{padding-right:100px}.choices__list--dropdown .choices__item--selectable:after{content:attr(data-select-text);font-size:12px;opacity:0;position:absolute;right:10px;top:50%;transform:translateY(-50%)}[dir="rtl"] .choices__list--dropdown .choices__item--selectable{text-align:right;padding-left:100px;padding-right:10px}[dir="rtl"] .choices__list--dropdown .choices__item--selectable:after{right:auto;left:10px}}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:#f2f2f2}.choices__list--dropdown .choices__item--selectable.is-highlighted:after{opacity:.5}.choices__item{cursor:default}.choices__item--selectable{cursor:pointer}.choices__item--disabled{cursor:not-allowed;user-select:none;opacity:.5}.choices__heading{font-weight:600;font-size:12px;padding:10px;border-bottom:1px solid #f7f7f7;color:gray}.choices__button{text-indent:-9999px;-webkit-appearance:none;appearance:none;border:0;background-color:transparent;background-repeat:no-repeat;background-position:center;cursor:pointer}.choices__button:focus{outline:none}.choices__input{display:inline-block;vertical-align:baseline !important;background-color:#f9f9f9;font-size:14px;margin:0 !important;border:0 !important;border-radius:0 !important;max-width:100%;min-height:0 !important;width:auto !important;padding:4px 0 4px 2px !important}.choices__input:focus{outline:0}[dir="rtl"] .choices__input{padding-right:2px;padding-left:0}.choices__placeholder{opacity:.5}.wpforms-admin-page .wpforms-btn{border:0;border-radius:3px;cursor:pointer;display:inline-block;margin:0;text-decoration:none;text-align:center;vertical-align:middle;white-space:nowrap;box-shadow:none}.wpforms-admin-page .wpforms-btn-block{display:block;width:100%}.wpforms-admin-page .wpforms-btn-md{font-size:13px;font-weight:600;padding:8px 12px;min-height:35px}.wpforms-admin-page .wpforms-btn-lg{font-size:16px;font-weight:600;padding:16px 28px}.wpforms-admin-page .wpforms-btn-orange{background-color:#e27730;border-color:#e27730;color:#fff}.wpforms-admin-page .wpforms-btn-orange:hover{background-color:#b85a1b;border-color:#b85a1b}.wpforms-admin-page .wpforms-btn-grey{background-color:#eee;border-color:#ccc;color:#666}.wpforms-admin-page .wpforms-btn-grey:hover{background-color:#d7d7d7;border-color:#ccc;color:#444}.wpforms-admin-page .wpforms-btn-light-grey{background-color:#f5f5f5;border:1px solid #ccc;color:#666}.wpforms-admin-page .wpforms-btn-light-grey:hover{background-color:#eee;color:#444}.wpforms-admin-page .wpforms-btn-trans-green{background-color:none;color:#2a9b39}.wpforms-admin-page .wpforms-btn-trans-green:hover{background-color:#2a9b39;color:#fff}.wpforms-admin-page .wpforms-btn-trans-green .underline{position:relative}.wpforms-admin-page .wpforms-btn-trans-green .underline:after{content:" ";border-bottom:1px dashed #2a9b39;position:absolute;bottom:-5px;left:0;width:100%}.wpforms-admin-page .wpforms-btn-trans-green .dashicons{height:18px}body div.jconfirm *,body div.jconfirm *::before,body div.jconfirm *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body div.jconfirm div.jconfirm-box-container div.jconfirm-box{border-radius:0;box-shadow:0 2px 6px rgba(0,0,0,0.2)}body div.jconfirm div.jconfirm-box-container div.jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.4);top:8px;right:8px}body div.jconfirm div.jconfirm-box-container div.jconfirm-box div.jconfirm-closeIcon:hover{color:rgba(0,0,0,0.8)}body div.jconfirm div.jconfirm-box div.jconfirm-title-c{margin:0 0 26px 0 !important;padding:0 !important}body div.jconfirm div.jconfirm-box div.jconfirm-title-c span.jconfirm-icon-c{margin:0 !important;color:#c4c4c4 !important}body div.jconfirm div.jconfirm-box div.jconfirm-title-c span.jconfirm-title{display:block;color:#333}body div.jconfirm div.jconfirm-box div.jconfirm-title-c span.jconfirm-icon-c+span.jconfirm-title{margin-top:20px !important}body div.jconfirm div.jconfirm-box div.jconfirm-content-pane{margin-bottom:26px;display:block}body div.jconfirm div.jconfirm-box div.jconfirm-content-pane .jconfirm-content{overflow:inherit}body div.jconfirm div.jconfirm-box div.jconfirm-content{font-size:16px;color:#555;line-height:1.4}body div.jconfirm div.jconfirm-box div.jconfirm-content.lite-upgrade p{font-size:18px;padding:0 20px}body div.jconfirm div.jconfirm-box div.jconfirm-content p{margin:0 0 16px;font-size:16px;line-height:1.5}body div.jconfirm div.jconfirm-box div.jconfirm-content p:last-of-type{margin:0}body div.jconfirm div.jconfirm-box div.jconfirm-content p.large{font-size:18px}body div.jconfirm div.jconfirm-box div.jconfirm-content p.small{font-size:14px}body div.jconfirm div.jconfirm-box div.jconfirm-content .already-purchased{font-size:12px;color:#ccc;text-decoration:none}body div.jconfirm div.jconfirm-box div.jconfirm-content .already-purchased:hover{text-decoration:underline}body div.jconfirm div.jconfirm-box div.jconfirm-buttons .already-purchased{display:block;font-size:12px;color:#aaa;text-decoration:none;padding-top:20px}body div.jconfirm div.jconfirm-box div.jconfirm-buttons .already-purchased:hover{color:#999;text-decoration:underline}body div.jconfirm div.jconfirm-box .discount-note{text-align:center;margin:30px 0 0}body div.jconfirm div.jconfirm-box .discount-note p{background-color:#faffac;margin:0 -30px;padding:24px 60px 20px;font-size:15px;color:#4d4d4d;position:relative}body div.jconfirm div.jconfirm-box .discount-note p:after{content:'\f058';display:inline-block;font:normal normal normal 14px/1 FontAwesome;background-color:#fff;font-size:26px;border-radius:50%;padding:5px 6px;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:-20px;right:50%;margin-right:-18px;color:#3abc01}body div.jconfirm div.jconfirm-box .discount-note span{font-weight:700;color:#3abc01}body div.jconfirm div.jconfirm-box .discount-note a{color:#aaa;display:block;margin-top:12px}body div.jconfirm div.jconfirm-box input[type=text]{display:block;width:99%;border:1px solid #d6d6d6;padding:10px;box-shadow:none;margin:20px auto 0 auto}body div.jconfirm div.jconfirm-box #wpforms-embed-shortcode{margin:20px 0;text-align:center;font-size:24px;padding:8px 5px}body div.jconfirm div.jconfirm-box #wpforms-embed-shortcode:disabled{color:#333}body div.jconfirm div.jconfirm-box button.btn-confirm{background-color:#e27730;color:#fff;outline:none}body div.jconfirm div.jconfirm-box button.btn-confirm:hover{background-color:#b85a1b;border-color:#b85a1b}body div.jconfirm div.jconfirm-box .error{display:none;color:red}body div.jconfirm div.jconfirm-box .wpforms-error{border:1px solid #ebccd1 !important}body div.jconfirm div.jconfirm-box .jconfirm-title-c .jconfirm-icon-c{-webkit-transition:none !important;transition:none !important;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important;font-size:45px !important}body .choices{text-align:left}body .choices input[type=text].choices__input{display:inline-block !important}.wpforms-admin-page .wpforms-alert{padding:16px;margin-bottom:18px;border:1px solid transparent}.wpforms-admin-page .wpforms-alert h4{margin-top:0;color:inherit}.wpforms-admin-page .wpforms-alert p{margin:0 0 15px 0}.wpforms-admin-page .wpforms-alert p:last-of-type{margin:0}.wpforms-admin-page .wpforms-alert.wpforms-alert-nomargin{margin:0}.wpforms-admin-page .wpforms-alert.wpforms-alert-small{font-size:12px}.wpforms-admin-page .wpforms-alert.wpforms-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wpforms-admin-page .wpforms-alert.wpforms-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.wpforms-admin-page .wpforms-alert.wpforms-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.wpforms-admin-page .wpforms-alert.wpforms-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.wpforms-flag{width:16px;height:16px;background:url(../images/flags.png) no-repeat;display:inline-block}.wpforms-flag.wpforms-flag-ad{background-position:-16px 0}.wpforms-flag.wpforms-flag-ae{background-position:-32px 0}.wpforms-flag.wpforms-flag-af{background-position:-48px 0}.wpforms-flag.wpforms-flag-ag{background-position:-64px 0}.wpforms-flag.wpforms-flag-ai{background-position:-80px 0}.wpforms-flag.wpforms-flag-al{background-position:-96px 0}.wpforms-flag.wpforms-flag-am{background-position:-112px 0}.wpforms-flag.wpforms-flag-an{background-position:-128px 0}.wpforms-flag.wpforms-flag-ao{background-position:-144px 0}.wpforms-flag.wpforms-flag-ar{background-position:-160px 0}.wpforms-flag.wpforms-flag-as{background-position:-176px 0}.wpforms-flag.wpforms-flag-at{background-position:-192px 0}.wpforms-flag.wpforms-flag-au{background-position:-208px 0}.wpforms-flag.wpforms-flag-aw{background-position:-224px 0}.wpforms-flag.wpforms-flag-az{background-position:0 -16px}.wpforms-flag.wpforms-flag-ba{background-position:-16px -16px}.wpforms-flag.wpforms-flag-bb{background-position:-32px -16px}.wpforms-flag.wpforms-flag-bd{background-position:-48px -16px}.wpforms-flag.wpforms-flag-be{background-position:-64px -16px}.wpforms-flag.wpforms-flag-bf{background-position:-80px -16px}.wpforms-flag.wpforms-flag-bg{background-position:-96px -16px}.wpforms-flag.wpforms-flag-bh{background-position:-112px -16px}.wpforms-flag.wpforms-flag-bi{background-position:-128px -16px}.wpforms-flag.wpforms-flag-bj{background-position:-144px -16px}.wpforms-flag.wpforms-flag-bm{background-position:-160px -16px}.wpforms-flag.wpforms-flag-bn{background-position:-176px -16px}.wpforms-flag.wpforms-flag-bo{background-position:-192px -16px}.wpforms-flag.wpforms-flag-br{background-position:-208px -16px}.wpforms-flag.wpforms-flag-bs{background-position:-224px -16px}.wpforms-flag.wpforms-flag-bt{background-position:0 -32px}.wpforms-flag.wpforms-flag-bw{background-position:-16px -32px}.wpforms-flag.wpforms-flag-by{background-position:-32px -32px}.wpforms-flag.wpforms-flag-bz{background-position:-48px -32px}.wpforms-flag.wpforms-flag-ca{background-position:-64px -32px}.wpforms-flag.wpforms-flag-cd{background-position:-80px -32px}.wpforms-flag.wpforms-flag-cf{background-position:-96px -32px}.wpforms-flag.wpforms-flag-cg{background-position:-112px -32px}.wpforms-flag.wpforms-flag-ch{background-position:-128px -32px}.wpforms-flag.wpforms-flag-ci{background-position:-144px -32px}.wpforms-flag.wpforms-flag-ck{background-position:-160px -32px}.wpforms-flag.wpforms-flag-cl{background-position:-176px -32px}.wpforms-flag.wpforms-flag-cm{background-position:-192px -32px}.wpforms-flag.wpforms-flag-cn{background-position:-208px -32px}.wpforms-flag.wpforms-flag-co{background-position:-224px -32px}.wpforms-flag.wpforms-flag-cr{background-position:0 -48px}.wpforms-flag.wpforms-flag-cu{background-position:-16px -48px}.wpforms-flag.wpforms-flag-cv{background-position:-32px -48px}.wpforms-flag.wpforms-flag-cy{background-position:-48px -48px}.wpforms-flag.wpforms-flag-cz{background-position:-64px -48px}.wpforms-flag.wpforms-flag-de{background-position:-80px -48px}.wpforms-flag.wpforms-flag-dj{background-position:-96px -48px}.wpforms-flag.wpforms-flag-dk{background-position:-112px -48px}.wpforms-flag.wpforms-flag-dm{background-position:-128px -48px}.wpforms-flag.wpforms-flag-do{background-position:-144px -48px}.wpforms-flag.wpforms-flag-dz{background-position:-160px -48px}.wpforms-flag.wpforms-flag-ec{background-position:-176px -48px}.wpforms-flag.wpforms-flag-ee{background-position:-192px -48px}.wpforms-flag.wpforms-flag-eg{background-position:-208px -48px}.wpforms-flag.wpforms-flag-eh{background-position:-224px -48px}.wpforms-flag.wpforms-flag-er{background-position:0 -64px}.wpforms-flag.wpforms-flag-es{background-position:-16px -64px}.wpforms-flag.wpforms-flag-et{background-position:-32px -64px}.wpforms-flag.wpforms-flag-fi{background-position:-48px -64px}.wpforms-flag.wpforms-flag-fj{background-position:-64px -64px}.wpforms-flag.wpforms-flag-fm{background-position:-80px -64px}.wpforms-flag.wpforms-flag-fo{background-position:-96px -64px}.wpforms-flag.wpforms-flag-fr{background-position:-112px -64px}.wpforms-flag.wpforms-flag-ga{background-position:-128px -64px}.wpforms-flag.wpforms-flag-gb{background-position:-144px -64px}.wpforms-flag.wpforms-flag-gd{background-position:-160px -64px}.wpforms-flag.wpforms-flag-ge{background-position:-176px -64px}.wpforms-flag.wpforms-flag-gg{background-position:-192px -64px}.wpforms-flag.wpforms-flag-gh{background-position:-208px -64px}.wpforms-flag.wpforms-flag-gi{background-position:-224px -64px}.wpforms-flag.wpforms-flag-gl{background-position:0 -80px}.wpforms-flag.wpforms-flag-gm{background-position:-16px -80px}.wpforms-flag.wpforms-flag-gn{background-position:-32px -80px}.wpforms-flag.wpforms-flag-gp{background-position:-48px -80px}.wpforms-flag.wpforms-flag-gq{background-position:-64px -80px}.wpforms-flag.wpforms-flag-gr{background-position:-80px -80px}.wpforms-flag.wpforms-flag-gt{background-position:-96px -80px}.wpforms-flag.wpforms-flag-gu{background-position:-112px -80px}.wpforms-flag.wpforms-flag-gw{background-position:-128px -80px}.wpforms-flag.wpforms-flag-gy{background-position:-144px -80px}.wpforms-flag.wpforms-flag-hk{background-position:-160px -80px}.wpforms-flag.wpforms-flag-hn{background-position:-176px -80px}.wpforms-flag.wpforms-flag-hr{background-position:-192px -80px}.wpforms-flag.wpforms-flag-ht{background-position:-208px -80px}.wpforms-flag.wpforms-flag-hu{background-position:-224px -80px}.wpforms-flag.wpforms-flag-id{background-position:0 -96px}.wpforms-flag.wpforms-flag-ie{background-position:-16px -96px}.wpforms-flag.wpforms-flag-il{background-position:-32px -96px}.wpforms-flag.wpforms-flag-im{background-position:-48px -96px}.wpforms-flag.wpforms-flag-in{background-position:-64px -96px}.wpforms-flag.wpforms-flag-iq{background-position:-80px -96px}.wpforms-flag.wpforms-flag-ir{background-position:-96px -96px}.wpforms-flag.wpforms-flag-is{background-position:-112px -96px}.wpforms-flag.wpforms-flag-it{background-position:-128px -96px}.wpforms-flag.wpforms-flag-je{background-position:-144px -96px}.wpforms-flag.wpforms-flag-jm{background-position:-160px -96px}.wpforms-flag.wpforms-flag-jo{background-position:-176px -96px}.wpforms-flag.wpforms-flag-jp{background-position:-192px -96px}.wpforms-flag.wpforms-flag-ke{background-position:-208px -96px}.wpforms-flag.wpforms-flag-kg{background-position:-224px -96px}.wpforms-flag.wpforms-flag-kh{background-position:0 -112px}.wpforms-flag.wpforms-flag-ki{background-position:-16px -112px}.wpforms-flag.wpforms-flag-km{background-position:-32px -112px}.wpforms-flag.wpforms-flag-kn{background-position:-48px -112px}.wpforms-flag.wpforms-flag-kp{background-position:-64px -112px}.wpforms-flag.wpforms-flag-kr{background-position:-80px -112px}.wpforms-flag.wpforms-flag-kw{background-position:-96px -112px}.wpforms-flag.wpforms-flag-ky{background-position:-112px -112px}.wpforms-flag.wpforms-flag-kz{background-position:-128px -112px}.wpforms-flag.wpforms-flag-la{background-position:-144px -112px}.wpforms-flag.wpforms-flag-lb{background-position:-160px -112px}.wpforms-flag.wpforms-flag-lc{background-position:-176px -112px}.wpforms-flag.wpforms-flag-li{background-position:-192px -112px}.wpforms-flag.wpforms-flag-lk{background-position:-208px -112px}.wpforms-flag.wpforms-flag-lr{background-position:-224px -112px}.wpforms-flag.wpforms-flag-ls{background-position:0 -128px}.wpforms-flag.wpforms-flag-lt{background-position:-16px -128px}.wpforms-flag.wpforms-flag-lu{background-position:-32px -128px}.wpforms-flag.wpforms-flag-lv{background-position:-48px -128px}.wpforms-flag.wpforms-flag-ly{background-position:-64px -128px}.wpforms-flag.wpforms-flag-ma{background-position:-80px -128px}.wpforms-flag.wpforms-flag-mc{background-position:-96px -128px}.wpforms-flag.wpforms-flag-md{background-position:-112px -128px}.wpforms-flag.wpforms-flag-me{background-position:-128px -128px}.wpforms-flag.wpforms-flag-mg{background-position:-144px -128px}.wpforms-flag.wpforms-flag-mh{background-position:-160px -128px}.wpforms-flag.wpforms-flag-mk{background-position:-176px -128px}.wpforms-flag.wpforms-flag-ml{background-position:-192px -128px}.wpforms-flag.wpforms-flag-mm{background-position:-208px -128px}.wpforms-flag.wpforms-flag-mn{background-position:-224px -128px}.wpforms-flag.wpforms-flag-mo{background-position:0 -144px}.wpforms-flag.wpforms-flag-mq{background-position:-16px -144px}.wpforms-flag.wpforms-flag-mr{background-position:-32px -144px}.wpforms-flag.wpforms-flag-ms{background-position:-48px -144px}.wpforms-flag.wpforms-flag-mt{background-position:-64px -144px}.wpforms-flag.wpforms-flag-mu{background-position:-80px -144px}.wpforms-flag.wpforms-flag-mv{background-position:-96px -144px}.wpforms-flag.wpforms-flag-mw{background-position:-112px -144px}.wpforms-flag.wpforms-flag-mx{background-position:-128px -144px}.wpforms-flag.wpforms-flag-my{background-position:-144px -144px}.wpforms-flag.wpforms-flag-mz{background-position:-160px -144px}.wpforms-flag.wpforms-flag-na{background-position:-176px -144px}.wpforms-flag.wpforms-flag-nc{background-position:-192px -144px}.wpforms-flag.wpforms-flag-ne{background-position:-208px -144px}.wpforms-flag.wpforms-flag-ng{background-position:-224px -144px}.wpforms-flag.wpforms-flag-ni{background-position:0 -160px}.wpforms-flag.wpforms-flag-nl{background-position:-16px -160px}.wpforms-flag.wpforms-flag-no{background-position:-32px -160px}.wpforms-flag.wpforms-flag-np{background-position:-48px -160px}.wpforms-flag.wpforms-flag-nr{background-position:-64px -160px}.wpforms-flag.wpforms-flag-nz{background-position:-80px -160px}.wpforms-flag.wpforms-flag-om{background-position:-96px -160px}.wpforms-flag.wpforms-flag-pa{background-position:-112px -160px}.wpforms-flag.wpforms-flag-pe{background-position:-128px -160px}.wpforms-flag.wpforms-flag-pf{background-position:-144px -160px}.wpforms-flag.wpforms-flag-pg{background-position:-160px -160px}.wpforms-flag.wpforms-flag-ph{background-position:-176px -160px}.wpforms-flag.wpforms-flag-pk{background-position:-192px -160px}.wpforms-flag.wpforms-flag-pl{background-position:-208px -160px}.wpforms-flag.wpforms-flag-pr{background-position:-224px -160px}.wpforms-flag.wpforms-flag-ps{background-position:0 -176px}.wpforms-flag.wpforms-flag-pt{background-position:-16px -176px}.wpforms-flag.wpforms-flag-pw{background-position:-32px -176px}.wpforms-flag.wpforms-flag-py{background-position:-48px -176px}.wpforms-flag.wpforms-flag-qa{background-position:-64px -176px}.wpforms-flag.wpforms-flag-re{background-position:-80px -176px}.wpforms-flag.wpforms-flag-ro{background-position:-96px -176px}.wpforms-flag.wpforms-flag-rs{background-position:-112px -176px}.wpforms-flag.wpforms-flag-ru{background-position:-128px -176px}.wpforms-flag.wpforms-flag-rw{background-position:-144px -176px}.wpforms-flag.wpforms-flag-sa{background-position:-160px -176px}.wpforms-flag.wpforms-flag-sb{background-position:-176px -176px}.wpforms-flag.wpforms-flag-sc{background-position:-192px -176px}.wpforms-flag.wpforms-flag-sd{background-position:-208px -176px}.wpforms-flag.wpforms-flag-se{background-position:-224px -176px}.wpforms-flag.wpforms-flag-sg{background-position:0 -192px}.wpforms-flag.wpforms-flag-si{background-position:-16px -192px}.wpforms-flag.wpforms-flag-sk{background-position:-32px -192px}.wpforms-flag.wpforms-flag-sl{background-position:-48px -192px}.wpforms-flag.wpforms-flag-sm{background-position:-64px -192px}.wpforms-flag.wpforms-flag-sn{background-position:-80px -192px}.wpforms-flag.wpforms-flag-so{background-position:-96px -192px}.wpforms-flag.wpforms-flag-sr{background-position:-112px -192px}.wpforms-flag.wpforms-flag-st{background-position:-128px -192px}.wpforms-flag.wpforms-flag-sv{background-position:-144px -192px}.wpforms-flag.wpforms-flag-sy{background-position:-160px -192px}.wpforms-flag.wpforms-flag-sz{background-position:-176px -192px}.wpforms-flag.wpforms-flag-tc{background-position:-192px -192px}.wpforms-flag.wpforms-flag-td{background-position:-208px -192px}.wpforms-flag.wpforms-flag-tg{background-position:-224px -192px}.wpforms-flag.wpforms-flag-th{background-position:0 -208px}.wpforms-flag.wpforms-flag-tj{background-position:-16px -208px}.wpforms-flag.wpforms-flag-tl{background-position:-32px -208px}.wpforms-flag.wpforms-flag-tm{background-position:-48px -208px}.wpforms-flag.wpforms-flag-tn{background-position:-64px -208px}.wpforms-flag.wpforms-flag-to{background-position:-80px -208px}.wpforms-flag.wpforms-flag-tr{background-position:-96px -208px}.wpforms-flag.wpforms-flag-tt{background-position:-112px -208px}.wpforms-flag.wpforms-flag-tv{background-position:-128px -208px}.wpforms-flag.wpforms-flag-tw{background-position:-144px -208px}.wpforms-flag.wpforms-flag-tz{background-position:-160px -208px}.wpforms-flag.wpforms-flag-ua{background-position:-176px -208px}.wpforms-flag.wpforms-flag-ug{background-position:-192px -208px}.wpforms-flag.wpforms-flag-us{background-position:-208px -208px}.wpforms-flag.wpforms-flag-uy{background-position:-224px -208px}.wpforms-flag.wpforms-flag-uz{background-position:0 -224px}.wpforms-flag.wpforms-flag-va{background-position:-16px -224px}.wpforms-flag.wpforms-flag-vc{background-position:-32px -224px}.wpforms-flag.wpforms-flag-ve{background-position:-48px -224px}.wpforms-flag.wpforms-flag-vg{background-position:-64px -224px}.wpforms-flag.wpforms-flag-vi{background-position:-80px -224px}.wpforms-flag.wpforms-flag-vn{background-position:-96px -224px}.wpforms-flag.wpforms-flag-vu{background-position:-112px -224px}.wpforms-flag.wpforms-flag-ws{background-position:-128px -224px}.wpforms-flag.wpforms-flag-ye{background-position:-144px -224px}.wpforms-flag.wpforms-flag-za{background-position:-160px -224px}.wpforms-flag.wpforms-flag-zm{background-position:-176px -224px}.wpforms-flag.wpforms-flag-zw{background-position:-192px -224px}#wpforms-header-temp{position:relative;margin:0;position:absolute;top:-1px;left:20px;right:20px;z-index:99}#wpforms-header{border-top:3px solid #e27730;padding:22px 20px}#wpforms-header img{display:block;margin:0;max-width:235px}@media (max-width: 782px){#wpforms-header img{max-width:200px}}.wpforms-admin-wrap .page-title{background-color:#fff;margin:0 0 20px 0;padding:15px 20px}.wpforms-admin-wrap .page-title .add-new-h2{margin-left:28px}.wpforms-admin-tabs{background-color:#fff;margin:0 0 20px 0;padding:0 20px;list-style:none;overflow:auto;font-size:14px}.wpforms-admin-tabs li{margin:0 30px 0 0;padding:0;float:left}.wpforms-admin-tabs li:last-of-type{margin:0}.wpforms-admin-tabs li a{color:#666;display:block;padding:20px 0 18px 0;text-decoration:none;border-bottom:2px solid #fff;box-shadow:none}.wpforms-admin-tabs li a:hover{border-color:#999}.wpforms-admin-tabs li a.active{border-color:#e27730}#wpcontent{padding-left:0 !important;position:relative}@media (max-width: 600px){#wpcontent{padding-top:46px}}@media (max-width: 600px){#wpbody{padding-top:0}}.wpforms-admin-page #screen-meta-links,.wpforms-admin-page #screen-meta{display:none}.wpforms-admin-page .video-container{position:relative;padding-bottom:56.1%;height:0;overflow:hidden}.wpforms-admin-page .video-container iframe,.wpforms-admin-page .video-container object,.wpforms-admin-page .video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.wpforms-admin-page .wpforms-file-upload input[type=file]{width:0.1px;height:0.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.wpforms-admin-page .wpforms-file-upload label{text-overflow:ellipsis;white-space:nowrap;cursor:pointer;display:inline-block;overflow:hidden;padding:0}.wpforms-admin-page .wpforms-file-upload input[type=file]:focus+label,.wpforms-admin-page .wpforms-file-upload input[type=file].has-focus+label{outline:1px dotted #000;outline:-webkit-focus-ring-color auto 5px}.wpforms-admin-page .wpforms-file-upload .fld{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;width:400px;min-height:35px}.wpforms-admin-page .wpforms-file-upload .fld .placeholder{color:#ccc}.wpforms-admin-page .wpforms-file-upload strong .fa{margin-right:8px}.wpforms-admin-page .wpforms-hide{display:none}.wpforms-admin-page .wpforms-h1-placeholder{display:none}.wpforms-admin-page .notice{display:none}.wpforms-admin-wrap{margin:0}.wpforms-admin-wrap .notice{margin-left:20px !important;margin-right:20px !important}.wpforms-admin-content{padding-left:20px;padding-right:20px}.wpforms-admin-content:before{content:" ";display:table}.wpforms-admin-content:after{clear:both;content:" ";display:table}.wpforms-clear:before{content:" ";display:table}.wpforms-clear:after{clear:both;content:" ";display:table}.wpforms-admin-columns>div[class*="-column-"]{float:left}.wpforms-admin-columns .wpforms-admin-column-20{width:20%}.wpforms-admin-columns .wpforms-admin-column-33{width:33.33333%}.wpforms-admin-columns .wpforms-admin-column-40{width:40%}.wpforms-admin-columns .wpforms-admin-column-50{width:50%}.wpforms-admin-columns .wpforms-admin-column-60{width:60%}.wpforms-admin-columns .wpforms-admin-column-80{width:80%}.wpforms-admin-columns .wpforms-admin-column-last{float:right !important}.wpforms-admin-columns:after{content:"";display:table;clear:both}#wpforms-overview .tablenav.top{margin-top:0}#wpforms-overview .wp-list-table .column-id{width:30px}#wpforms-overview .wp-list-table .column-entries{width:70px}#wpforms-overview .wp-list-table .column-shortcode{width:150px}#wpforms-overview .wp-list-table .column-created{width:145px}#wpforms-entries-single #poststuff{padding:0}#wpforms-entries-single .postbox .hndle{cursor:default !important}#wpforms-entries-single .wpforms-entry-navigation{font-size:13px;line-height:29px;float:right;position:relative;padding-top:2px;padding-right:1px;white-space:nowrap}@media (max-width: 600px){#wpforms-entries-single .wpforms-entry-navigation{display:none}}#wpforms-entries-single .wpforms-entry-navigation .add-new-h2{top:auto;margin:0;padding:4px 0px;text-align:center}@media (max-width: 782px){#wpforms-entries-single .wpforms-entry-navigation .add-new-h2{font-size:13px}}#wpforms-entries-single .wpforms-entry-navigation .add-new-h2 .dashicons{font-size:16px;height:auto;width:28px;line-height:29px}#wpforms-entries-single .wpforms-entry-navigation .add-new-h2.inactive{opacity:0.5;pointer-events:none;cursor:default}#wpforms-entries-single .wpforms-entry-navigation .wpforms-entry-navigation-text{display:inline-block;margin-right:10px}#wpforms-entries-single .wpforms-entry-navigation .wpforms-entry-current{top:auto;margin:0 -5px 0 -3px;text-align:center;padding:4px 10px;position:relative;text-decoration:none;border:1px solid #ccc;-webkit-border-radius:2px;border-radius:2px;background:#fff;font-size:13px;line-height:29px;text-transform:center}#wpforms-entries-single #wpforms-entry-fields h2.hndle{font-size:18px}#wpforms-entries-single #wpforms-entry-fields h2.hndle .dashicons{font-size:16px;height:16px;width:16px;margin:4px 4px 0 0;color:#e27730}#wpforms-entries-single #wpforms-entry-fields .no-fields{padding:12px;margin:0}#wpforms-entries-single #wpforms-entry-fields .inside{padding:0;margin:0}#wpforms-entries-single #wpforms-entry-fields .inside p{padding:0;margin:0}#wpforms-entries-single #wpforms-entry-fields .inside .wpforms-entry-field-name{font-weight:600;background:#ebf3fb;padding:8px 12px}#wpforms-entries-single #wpforms-entry-fields .inside .wpforms-entry-field-value{background:#fff;padding:8px 12px}#wpforms-entries-single #wpforms-entry-fields .inside .empty .wpforms-entry-field-value{font-style:italic;color:#999}#wpforms-entries-single #wpforms-entry-fields .wpforms-empty-field-toggle{float:right;text-decoration:none;padding:5px 0 0}#wpforms-entries-single #wpforms-entry-notes .inside{margin:0;padding:0}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-new{padding:10px}#wpforms-entries-single #wpforms-entry-notes form{display:none}#wpforms-entries-single #wpforms-entry-notes .btns{overflow:auto;padding:8px 0}#wpforms-entries-single #wpforms-entry-notes .no-notes{margin:0;padding:4px 10px 8px}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-single{padding:10px;border-top:1px solid #e3e1e3}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-single p:last-of-type{margin-bottom:0}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-single.even{background-color:#f9f9f9}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline{color:#888;margin-bottom:10px}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .sep{color:#ddd}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .notes-user{text-decoration:none;font-weight:600}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .note-delete{color:#a00;text-decoration:none}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .note-delete:hover{color:red;text-decoration:none}#wpforms-entries-single #wpforms-entry-details .inside,#wpforms-entries-single #wpforms-entry-payment .inside,#wpforms-entries-single #wpforms-entry-actions .inside{margin:0;padding:0}#wpforms-entries-single .wpforms-entry-details-meta,#wpforms-entries-single .wpforms-entry-actions-meta{padding:6px 0 0}#wpforms-entries-single .wpforms-entry-details-meta p,#wpforms-entries-single .wpforms-entry-payment-meta p,#wpforms-entries-single .wpforms-entry-actions-meta p{padding:6px 10px 8px;margin:0}#wpforms-entries-single .wpforms-entry-payment-meta{padding:0}#wpforms-entries-single .wpforms-entry-payment-meta p{border-bottom:1px solid #eee;padding:10px}#wpforms-entries-single .wpforms-entry-payment-meta p:last-of-type{border-bottom:0}#wpforms-entries-single .wpforms-entry-details-meta strong,#wpforms-entries-single .wpforms-entry-actions-meta strong{font-weight:600}#wpforms-entries-single .wpforms-entry-details-meta .dashicons,#wpforms-entries-single .wpforms-entry-actions-meta .dashicons{padding:0 2px 0 0;color:#82878A;top:-1px;left:-1px;position:relative;text-decoration:none}#wpforms-entries-single #wpforms-entry-details .submitdelete{color:#a00;text-decoration:none;padding:1px 2px}#wpforms-entries-single #wpforms-entry-details .submitdelete:hover{color:red}#wpforms-entries-single .wpforms-entry-actions-meta a{text-decoration:none}#wpforms-entries-single .wpforms-entry-actions-meta a:hover{text-decoration:underline}#wpforms-entries-single #wpforms-entry-geolocation .inside{padding:0;margin:0}#wpforms-entries-single #wpforms-entry-geolocation ul{margin:0}#wpforms-entries-single #wpforms-entry-geolocation ul li{border-bottom:1px solid #eee;margin:0;overflow:auto}#wpforms-entries-single #wpforms-entry-geolocation ul li:last-of-type{border-bottom:0}#wpforms-entries-single #wpforms-entry-geolocation .wpforms-geolocation-meta{width:85px;float:left;border-right:1px solid #eee;padding:10px 20px 10px 12px}#wpforms-entries-single #wpforms-entry-geolocation .wpforms-geolocation-value{display:inline-block;padding:10px 12px 10px 20px}#wpforms-entries-single #wpforms-entry-geolocation .wpforms-flag{vertical-align:text-top;margin-right:4px}#wpforms-entries-list .form-details{border-bottom:1px solid #ddd;padding-bottom:15px;margin:0 0 10px}#wpforms-entries-list .form-details .form-details-sub{color:#999;display:block;font-size:10px;text-transform:uppercase;margin:0 0 8px 0}#wpforms-entries-list .form-details .form-details-title{float:left;font-size:18px;font-weight:400;margin:0}@media (max-width: 1199px){#wpforms-entries-list .form-details .form-details-title{float:none;margin-bottom:10px}}#wpforms-entries-list .form-details .form-selector{display:inline-block;position:relative}#wpforms-entries-list .form-details .form-selector .toggle{border-radius:50%;color:#444;font-size:16px;box-shadow:none}#wpforms-entries-list .form-details .form-selector .toggle:hover,#wpforms-entries-list .form-details .form-selector .toggle.active{background-color:#e3e3e3;outline:none}#wpforms-entries-list .form-details .form-selector .toggle:before{vertical-align:middle}#wpforms-entries-list .form-details .form-selector .form-list{display:none;background:#fff;border-radius:3px;box-shadow:0 2px 8px 0 rgba(0,0,0,0.1);position:absolute;top:27px;left:-108px;width:230px;padding:10px 0;z-index:9991}#wpforms-entries-list .form-details .form-selector .form-list:before{content:" ";position:absolute;top:-10px;left:110px;width:0;height:0;border-style:solid;border-width:0 8px 10px 8px;border-color:transparent transparent #fff transparent}#wpforms-entries-list .form-details .form-selector ul{max-height:196px;overflow-x:hidden;padding:0;margin:0}#wpforms-entries-list .form-details .form-selector ul li{list-style:none;margin:0;font-size:13px}#wpforms-entries-list .form-details .form-selector ul li a{display:block;text-decoration:none;padding:5px 15px;color:#444}#wpforms-entries-list .form-details .form-selector ul li a:hover{background-color:#f7f7f7}#wpforms-entries-list .form-details .form-details-actions{float:right}@media (max-width: 1199px){#wpforms-entries-list .form-details .form-details-actions{float:none}}#wpforms-entries-list .form-details .form-details-actions a{text-decoration:none;display:inline-block;margin:0 12px 0 0}#wpforms-entries-list .form-details .form-details-actions a:last-of-type{margin:0}#wpforms-entries-list .form-details .form-details-actions a .dashicons{width:16px;height:16px;font-size:16px}#wpforms-entries-list .search-box .wpforms-form-search-box-field{max-width:180px;vertical-align:top;margin:0 2px 0 0}#wpforms-entries-list .search-box .wpforms-form-search-box-comparison{max-width:90px;vertical-align:top;margin:0 2px 0 0}#wpforms-entries-list .search-box .wpforms-form-search-box-term{height:28px;margin:0 2px 0 0}#wpforms-entries-list .wpforms-filter-date .wpforms-filter-date-selector{height:28px;background-color:#fff;vertical-align:middle;max-width:210px}#wpforms-entries-list .wpforms-filter-date button{margin:1px 8px 0 0;vertical-align:top}#wpforms-entries-list .wp-list-table .new-entries-notification td{padding:0;text-align:center}#wpforms-entries-list .wp-list-table .new-entries-notification td a{display:none;padding:10px;background-color:#d9edf7}#wpforms-entries-list .wp-list-table .column-indicators{width:35px;text-align:center}#wpforms-entries-list .wp-list-table .column-indicators a:focus{-webkit-box-shadow:none;box-shadow:none}#wpforms-entries-list .wp-list-table .column-indicators .dashicons{width:14px;height:14px;font-size:14px;margin-top:3px}#wpforms-entries-list .wp-list-table .indicator-star .dashicons{margin-right:6px}#wpforms-entries-list .wp-list-table .indicator-star{color:#e4e4e4}#wpforms-entries-list .wp-list-table .indicator-star:hover,#wpforms-entries-list .wp-list-table .indicator-star.unstar{color:#e27730}#wpforms-entries-list .wp-list-table .indicator-read{color:#9ede84}#wpforms-entries-list .wp-list-table .indicator-read:hover,#wpforms-entries-list .wp-list-table .indicator-read.unread{color:#e4e4e4}#wpforms-entries-list .wp-list-table .column-date{width:150px}#wpforms-entries-list .wp-list-table .column-status{width:120px}#wpforms-entries-list .wp-list-table .column-status img{display:inline-block;height:12px;width:auto;margin:0 0 0 3px}#wpforms-entries-list .wp-list-table .column-payment_total{width:100px}#wpforms-entries-list .wp-list-table .column-actions{width:100px}#wpforms-entries-list .wp-list-table .sep{color:#ddd}#wpforms-entries-list .wp-list-table .delete:hover{color:red}#wpforms-entries-list #wpforms-entries-table-edit-columns{float:right;color:#ccc}#wpforms-entries-list #wpforms-entries-table-edit-columns:hover{color:#666}@media screen and (max-width: 782px){.wpforms-admin-content{padding-left:10px;padding-right:10px}.wp-list-table{margin:0 -10px 0 -10px;width:100vw;table-layout:auto}.wp-list-table.entries .column-indicators{width:auto !important}.wp-list-table.entries .indicators .indicator-star{display:none}.wp-list-table.entries .indicators .indicator-read{display:none}.wp-list-table.entries tr:not(.inline-edit-row):not(.no-items) td.column-primary{height:8px;padding:0;z-index:+1;margin-right:0;overflow:visible}.wp-list-table.entries .toggle-row{right:5px;top:15px}.wp-list-table.entries tr:not(.inline-edit-row):not(.no-items) td.column-primary+td{display:block !important}.wp-list-table.entries tr:not(.inline-edit-row):not(.no-items) td.column-primary ~ td{margin-right:5px;min-width:50vw}p.search-box{margin:0;width:auto}input[type=checkbox],input[type=radio]{height:16px;width:16px}}#wpforms-welcome{border-top:3px solid #e27730;color:#555;padding-top:110px}@media (max-width: 767px){#wpforms-welcome{padding-top:64px}}#wpforms-welcome *,#wpforms-welcome *::before,#wpforms-welcome *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpforms-welcome .container{margin:0 auto;max-width:720px;padding:0}#wpforms-welcome .block{padding:40px}@media (max-width: 767px){#wpforms-welcome .block{padding:20px}}#wpforms-welcome img{max-width:100%;height:auto}#wpforms-welcome h1{color:#222;font-size:24px;text-align:center;margin:0 0 16px 0}#wpforms-welcome h5{color:#222;font-size:16px;margin:0 0 8px 0}#wpforms-welcome h6{font-size:16px;font-weight:400;line-height:1.6;text-align:center;margin:0}#wpforms-welcome p{font-size:14px;margin:0 0 20px 0}#wpforms-welcome .button-wrap{max-width:590px;margin:0 auto 0 auto}#wpforms-welcome .button-wrap .left{float:left;width:50%;padding-right:20px}@media (max-width: 767px){#wpforms-welcome .button-wrap .left{float:none;width:100%;padding:0;margin-bottom:20px}}#wpforms-welcome .button-wrap .right{float:right;width:50%;padding-left:20px}@media (max-width: 767px){#wpforms-welcome .button-wrap .right{float:none;width:100%;padding:0}}#wpforms-welcome .intro{background-color:#fff;border:2px solid #e1e1e1;border-radius:2px;margin-bottom:30px;position:relative;padding-top:40px}#wpforms-welcome .intro .sullie{background-color:#fff;border:2px solid #e1e1e1;border-radius:50%;height:110px;width:110px;padding:18px 14px 0 14px;position:absolute;top:-58px;left:50%;margin-left:-55px}#wpforms-welcome .intro .video-thumbnail{display:block;margin:0 auto}#wpforms-welcome .intro .button-wrap{margin-top:25px}#wpforms-welcome .features{background-color:#fff;border:2px solid #e1e1e1;border-bottom:0;border-radius:2px 2px 0 0;position:relative;padding-top:20px;padding-bottom:20px}#wpforms-welcome .features .feature-list{margin-top:60px}#wpforms-welcome .features .feature-block{float:left;width:50%;padding-bottom:35px;overflow:auto}@media (max-width: 767px){#wpforms-welcome .features .feature-block{float:none;width:100%}}#wpforms-welcome .features .feature-block.first{padding-right:20px;clear:both}@media (max-width: 767px){#wpforms-welcome .features .feature-block.first{padding-right:0}}#wpforms-welcome .features .feature-block.last{padding-left:20px}@media (max-width: 767px){#wpforms-welcome .features .feature-block.last{padding-left:0}}#wpforms-welcome .features .feature-block img{float:left;max-width:46px}#wpforms-welcome .features .feature-block h5{margin-left:68px}#wpforms-welcome .features .feature-block p{margin:0;margin-left:68px}#wpforms-welcome .features .button-wrap{margin-top:25px;text-align:center}#wpforms-welcome .upgrade-cta{background-color:#000;border:2px solid #e1e1e1;border-top:0;border-bottom:0;color:#fff}#wpforms-welcome .upgrade-cta h2{color:#fff;font-size:20px;margin:0 0 30px 0}#wpforms-welcome .upgrade-cta ul{display:-ms-flex;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;font-size:15px;margin:0;padding:0}#wpforms-welcome .upgrade-cta ul li{display:block;width:50%;margin:0 0 8px 0;padding:0}#wpforms-welcome .upgrade-cta ul li .dashicons{color:#2a9b39;margin-right:5px}#wpforms-welcome .upgrade-cta .left{float:left;width:66.666666%;padding-right:20px}@media (max-width: 767px){#wpforms-welcome .upgrade-cta .left{float:none;width:100%;padding-right:0;margin-bottom:20px}}#wpforms-welcome .upgrade-cta .right{float:right;width:33.333333%;padding:20px 0 0 20px;text-align:center}@media (max-width: 767px){#wpforms-welcome .upgrade-cta .right{float:none;width:100%;padding-left:0}}#wpforms-welcome .upgrade-cta .right h2{text-align:center;margin:0}#wpforms-welcome .upgrade-cta .right h2 span{display:inline-block;border-bottom:1px solid #555;padding:0 15px 12px}#wpforms-welcome .upgrade-cta .right .price{padding:26px 0}#wpforms-welcome .upgrade-cta .right .price .amount{font-size:48px;font-weight:600;position:relative;display:inline-block}#wpforms-welcome .upgrade-cta .right .price .amount:before{content:'$';position:absolute;top:-8px;left:-16px;font-size:18px}#wpforms-welcome .upgrade-cta .right .price .term{font-size:12px;display:inline-block}#wpforms-welcome .testimonials{background-color:#fff;border:2px solid #e1e1e1;border-top:0;padding:20px 0}#wpforms-welcome .testimonials .testimonial-block{margin:50px 0 0 0}#wpforms-welcome .testimonials .testimonial-block img{border-radius:50%;float:left;max-width:100px;box-shadow:0 0 18px rgba(0,0,0,0.2)}@media (max-width: 767px){#wpforms-welcome .testimonials .testimonial-block img{width:65px}}#wpforms-welcome .testimonials .testimonial-block p{font-size:14px;margin:0 0 12px 140px}@media (max-width: 767px){#wpforms-welcome .testimonials .testimonial-block p{margin-left:100px}}#wpforms-welcome .testimonials .testimonial-block p:last-of-type{margin-bottom:0}#wpforms-welcome .footer{background-color:#f1f1f1;border:2px solid #e1e1e1;border-top:0;border-radius:0 0 2px 2px}#wpforms-welcome.pro .features{border:2px solid #e1e1e1;margin-bottom:30px}#wpforms-welcome.pro .upgrade,#wpforms-welcome.pro .footer{display:none}#wpforms-welcome.pro .testimonials{border:2px solid #e1e1e1}.dashboard_page_wpforms-getting-started .video-container{border:2px solid #e1e1e1}.dashboard_page_wpforms-getting-started #wpfooter,.dashboard_page_wpforms-getting-started div.notice{display:none !important}#wpforms-admin-addons *,#wpforms-admin-addons *::before,#wpforms-admin-addons *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpforms-admin-addons .addons-container{margin-left:-20px;margin-right:-20px}#wpforms-admin-addons .unlock-msg{padding:0 20px;margin-top:-20px;clear:both}#wpforms-admin-addons #wpforms-admin-addons-search{background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;vertical-align:middle;padding:7px 12px;margin:-3px 10px 0 0;width:200px;min-height:35px;float:right}#wpforms-admin-addons #wpforms-admin-addons-search:focus{border-color:#bbb}#wpforms-admin-addons .addon-container{padding:0 20px;float:left;width:33.333333%}@media (max-width: 1249px){#wpforms-admin-addons .addon-container{width:50%}}@media (max-width: 767px){#wpforms-admin-addons .addon-container{width:100%;margin-bottom:20px}}#wpforms-admin-addons h4{font-size:17px;font-weight:700}#wpforms-admin-addons .addon-item{background-color:#fff;border:1px solid #ddd;border-radius:3px;margin:0 0 40px 0}@media (max-width: 767px){#wpforms-admin-addons .addon-item{margin:0 0}}#wpforms-admin-addons .addon-item img{border:1px solid #eee;float:left;max-width:75px}#wpforms-admin-addons .addon-item h5{margin:0 0 10px 100px;font-size:16px}#wpforms-admin-addons .addon-item p{margin:0 0 0 100px}#wpforms-admin-addons .addon-item .details{padding:30px 20px}#wpforms-admin-addons .addon-item .actions{background-color:#f7f7f7;border-top:1px solid #ddd;padding:20px;position:relative}#wpforms-admin-addons .addon-item .actions .msg{background-color:#f7f7f7;position:absolute;text-align:center;font-weight:600;top:0;left:0;height:100%;width:100%;z-index:99;padding:20px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-ms-align-items:center;align-items:center;justify-content:center}#wpforms-admin-addons .addon-item .actions .msg.success{color:#2a9b39}#wpforms-admin-addons .addon-item .actions .msg.error{color:red}#wpforms-admin-addons .addon-item .status{float:left;padding-top:8px}#wpforms-admin-addons .addon-item .status .status-inactive{color:red}#wpforms-admin-addons .addon-item .status .status-download{color:#666}#wpforms-admin-addons .addon-item .status .status-active{color:#2a9b39}#wpforms-admin-addons .addon-item .upgrade-button{text-align:center}#wpforms-admin-addons .addon-item .upgrade-button a{font-weight:600;width:140px;text-align:center;padding:8px 5px}#wpforms-admin-addons .addon-item .action-button{float:right}#wpforms-admin-addons .addon-item .action-button button{background:none;border:1px solid #ddd;border-radius:3px;box-shadow:none;cursor:pointer;font-weight:600;width:140px;text-align:center;padding:8px 5px}#wpforms-admin-addons .addon-item .action-button button:hover,#wpforms-admin-addons .addon-item .action-button button.loading{background-color:#e9e9e9}#wpforms-admin-addons .addon-item .action-button button .fa{margin-right:8px}#wpforms-admin-addons .addon-item .action-button button .fa.fa-spinner{margin-right:0}#wpforms-admin-addons .addon-item .action-button button.status-active .fa{color:#2a9b39}#wpforms-admin-addons .addon-item .action-button button.status-inactive .fa{color:red}#wpforms-admin-addons .addon-item .action-button button.status-download .fa{color:#999}#wpforms-admin-addons .addon-item .action-button button.disabled{cursor:default}#wpforms-admin-addons .addon-item .action-button button.loading .fa{color:#666}#wpforms-admin-about *,#wpforms-admin-about *::before,#wpforms-admin-about *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpforms-admin-about .wpforms-admin-about-section{margin:0 20px 20px;padding:30px;background:#fff;border:1px solid #DDDDDD;line-height:2}#wpforms-admin-about .wpforms-admin-about-section h1,#wpforms-admin-about .wpforms-admin-about-section h2,#wpforms-admin-about .wpforms-admin-about-section h3,#wpforms-admin-about .wpforms-admin-about-section h4,#wpforms-admin-about .wpforms-admin-about-section h5{margin-top:0;padding-top:0;line-height:1.6}#wpforms-admin-about .wpforms-admin-about-section h2{font-size:24px}#wpforms-admin-about .wpforms-admin-about-section h3{font-size:18px;margin-bottom:30px;color:#23282C}#wpforms-admin-about .wpforms-admin-about-section ul,#wpforms-admin-about .wpforms-admin-about-section p{font-size:16px}#wpforms-admin-about .wpforms-admin-about-section p{margin-bottom:20px}#wpforms-admin-about .wpforms-admin-about-section p.bigger{font-size:18px}#wpforms-admin-about .wpforms-admin-about-section p.smaller{font-size:14px}#wpforms-admin-about .wpforms-admin-about-section p:last-child{margin-bottom:0}#wpforms-admin-about .wpforms-admin-about-section hr{margin:30px 0}#wpforms-admin-about .wpforms-admin-about-section figure{margin:0}#wpforms-admin-about .wpforms-admin-about-section figure img{width:100%}#wpforms-admin-about .wpforms-admin-about-section figure figcaption{font-size:14px;color:#888888;margin-top:5px;text-align:center;line-height:initial}#wpforms-admin-about .wpforms-admin-about-section .wpforms-admin-column-40{padding-left:15px}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section .wpforms-admin-column-40{width:100%;padding-left:0;padding-top:20px}}#wpforms-admin-about .wpforms-admin-about-section .wpforms-admin-column-60{padding-right:15px}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section .wpforms-admin-column-60{width:100%;padding-right:0}}#wpforms-admin-about .wpforms-admin-about-section ul.list-plain{margin-top:0;margin-bottom:0}#wpforms-admin-about .wpforms-admin-about-section ul.list-plain li{margin-bottom:0}#wpforms-admin-about .wpforms-admin-about-section ul.list-features li .fa{color:#2a9b39;margin:0 8px 0 0}#wpforms-admin-about .wpforms-admin-about-section .fa-star{color:gold}#wpforms-admin-about .wpforms-admin-about-section .no-margin{margin:0 !important}#wpforms-admin-about .wpforms-admin-about-section .no-padding{padding:0 !important}#wpforms-admin-about .wpforms-admin-about-section .centered{text-align:center !important}#wpforms-admin-about .wpforms-admin-about-section-first-form{display:flex}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-first-form{display:block !important}}#wpforms-admin-about .wpforms-admin-about-section-first-form .wpforms-admin-about-section-first-form-text{flex:1;padding-right:30px}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-first-form .wpforms-admin-about-section-first-form-text{flex:none}}#wpforms-admin-about .wpforms-admin-about-section-first-form .wpforms-admin-about-section-first-form-video iframe{border:1px solid #DDDDDD}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-first-form .wpforms-admin-about-section-first-form-video{padding-top:20px}}#wpforms-admin-about .wpforms-admin-about-section-hero{padding:0}#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-main,#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-extra{padding:30px}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-extra .wpforms-admin-column-50{float:none;width:100%}}#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-main{background-color:#FAFAFA;border-bottom:1px solid #DDDDDD}#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-main.no-border{border-bottom:0}#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-main p{color:#666}#wpforms-admin-about .wpforms-admin-about-section-hero h3.call-to-action{margin-bottom:-10px}#wpforms-admin-about .wpforms-admin-about-section-hero span.price-20-off{color:#6AB255}#wpforms-admin-about .wpforms-admin-about-section-squashed{margin-bottom:0}#wpforms-admin-about .wpforms-admin-about-section-squashed:not(:last-of-type){border-bottom:0}#wpforms-admin-about .wpforms-admin-about-section-post h2{margin-bottom:-10px}#wpforms-admin-about .wpforms-admin-about-section-post h3{margin-bottom:15px}#wpforms-admin-about .wpforms-admin-about-section-post p:last-of-type{margin-bottom:30px}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-20{padding-right:20px;width:auto}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-20 img{width:270px}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-20{width:20%}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-20 img{width:auto;max-width:100%}}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-80{padding-left:20px;width:calc(100% - 20px - 270px)}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-80{width:80%}}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-about-section-post-link{padding:10px 15px;background-color:#DF7739;color:#fff;border-radius:3px;text-decoration:none;margin-top:15px;font-size:14px}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-about-section-post-link:hover{background-color:#B85A1B}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-about-section-post-link .fa{color:#EDBA9E;vertical-align:middle;margin-left:8px}#wpforms-admin-about .wpforms-admin-about-section-table table{border-collapse:collapse}#wpforms-admin-about .wpforms-admin-about-section-table table tr td{border-bottom:1px solid #DDDDDD;border-right:1px solid #DDDDDD;padding:30px;vertical-align:top}#wpforms-admin-about .wpforms-admin-about-section-table table tr td:last-of-type{border-right:0}#wpforms-admin-about .wpforms-admin-about-section-table table tr:last-child td{border-bottom:none}#wpforms-admin-about .wpforms-admin-about-section-table table p{background-repeat:no-repeat;background-size:15px auto;background-position:0 6px;margin:0}#wpforms-admin-about .wpforms-admin-about-section-table table p.features-full{padding-left:30px;background-image:url(../images/about/icon-full.svg)}#wpforms-admin-about .wpforms-admin-about-section-table table p.features-none{padding-left:30px;background-image:url(../images/about/icon-none.svg)}#wpforms-admin-about .wpforms-admin-about-section-table table p.features-partial{padding-left:30px;background-position:-3px 0;background-size:23px auto;background-image:url(../images/about/icon-partial.svg)}#wpforms-admin-about .wpforms-admin-about-section-table .wpforms-admin-about-section-hero-main{padding:0}#wpforms-admin-about .wpforms-admin-about-section-table .wpforms-admin-about-section-hero-main h3{padding:30px 30px 30px 60px}#wpforms-admin-about .wpforms-admin-about-section-table .wpforms-admin-about-section-hero-main .wpforms-admin-column-33:first-child h3{padding:30px}#wpforms-admin-about #wpforms-admin-addons{padding:0 30px}#wpforms-admin-about #wpforms-admin-addons .addon-container{padding:0 10px}#wpforms-admin-about #wpforms-admin-addons .addon-item .details{padding:20px}#wpforms-admin-about #wpforms-admin-addons .addon-item img{padding:10px}#wpforms-admin-about #wpforms-admin-addons .addon-item img[src*="-mi"]{padding:13px}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button{display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;-webkit-appearance:none;border-radius:3px;border:1px solid #cccccc;background:#f7f7f7;box-shadow:0 1px 0 #cccccc;font-weight:normal}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button:hover,#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button:focus{background:#fafafa;border-color:#999;color:#23282d}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-primary{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-shadow:0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-primary:hover,#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-primary:focus{background:#008ec2;border-color:#006799;color:#fff}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-primary .fa-spinner{color:#fff}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-secondary{color:#555;border-color:#cccccc;background:#f7f7f7;box-shadow:0 1px 0 #cccccc}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-secondary:hover,#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-secondary:focus{background:#fafafa;border-color:#999;color:#23282d}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.disabled{cursor:default}.wpforms-admin-settings *,.wpforms-admin-settings *::before,.wpforms-admin-settings *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wpforms-admin-settings .wpforms-setting-row{border-bottom:1px solid #e4e4e4;padding:30px 0;font-size:14px;line-height:1.3}.wpforms-admin-settings .wpforms-setting-row:first-of-type{padding-top:10px !important}@media (max-width: 781px){.wpforms-admin-settings .wpforms-setting-row{padding:20px 0}}.wpforms-admin-settings .wpforms-setting-row.section-heading{padding:20px 0}.wpforms-admin-settings .wpforms-setting-row.section-heading.no-desc h4{margin:0}.wpforms-admin-settings .wpforms-setting-row.section-heading .wpforms-setting-field{margin:0;max-width:1000px}.wpforms-admin-settings .wpforms-setting-row.tools p,.wpforms-admin-settings .wpforms-setting-row.tools p:first-of-type{margin:0 0 16px 0}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-checkbox input[type=checkbox]{float:left;margin:1px 0 0 0}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-checkbox .desc{margin:0 0 0 30px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-license .wpforms-setting-label{padding-top:8px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-license p.type{margin-top:12px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-text .wpforms-setting-label{padding-top:8px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-select .wpforms-setting-label{padding-top:8px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-radio .wpforms-setting-field input[type=radio]{margin:-3px 10px 0 0}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-radio .wpforms-setting-field label{margin-right:30px;display:inline-block}.wpforms-admin-settings .wpforms-setting-row#wpforms-setting-row-email-template .wpforms-setting-field label:before{content:" ";display:block;width:155px;height:180px;margin:0 0 10px 0}.wpforms-admin-settings .wpforms-setting-row#wpforms-setting-row-email-template .wpforms-setting-field .option-default:before{background:url(../images/settings-email-html.png) center center}.wpforms-admin-settings .wpforms-setting-row#wpforms-setting-row-email-template .wpforms-setting-field .option-none:before{background:url(../images/settings-email-plaintext.png) center center}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-image .wpforms-setting-field img{display:block;margin:0 0 20px 0;max-width:400px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-color .wpforms-color-picker{padding-left:40px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-color .minicolors-input-swatch{top:7px;left:7px;height:21px;width:21px;border-radius:2px}.wpforms-admin-settings .wpforms-setting-row h4{font-size:20px;font-weight:700;margin:0 0 6px 0}.wpforms-admin-settings .wpforms-setting-row h3{font-size:24px;font-weight:600;margin:0 0 20px 0}.wpforms-admin-settings .wpforms-setting-row p{margin:12px 0 0;font-size:14px;line-height:1.3}.wpforms-admin-settings .wpforms-setting-row p:first-of-type{margin:8px 0 0}.wpforms-admin-settings .wpforms-setting-row p.desc{font-style:italic;color:#666}.wpforms-admin-settings .wpforms-setting-row p.discount-note{font-style:italic;color:#666}.wpforms-admin-settings .wpforms-setting-row p.discount-note strong{color:green}.wpforms-admin-settings .wpforms-setting-row input[type=text],.wpforms-admin-settings .wpforms-setting-row input[type=password]{background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;width:400px;min-height:35px}@media (max-width: 959px){.wpforms-admin-settings .wpforms-setting-row input[type=text],.wpforms-admin-settings .wpforms-setting-row input[type=password]{width:300px}}.wpforms-admin-settings .wpforms-setting-row input[type=text]:focus,.wpforms-admin-settings .wpforms-setting-row input[type=password]:focus{border-color:#bbb}.wpforms-admin-settings .wpforms-setting-row button{margin-right:10px}.wpforms-admin-settings .wpforms-setting-row .choicesjs-select-wrap{display:block;max-width:400px}@media (max-width: 959px){.wpforms-admin-settings .wpforms-setting-row .choicesjs-select-wrap{width:300px}}.wpforms-admin-settings .wpforms-setting-row .progress-bar{background:#fff;border:1px solid #e27730;height:30px;width:100%;position:relative;border-radius:3px;margin:0 0 16px 0}.wpforms-admin-settings .wpforms-setting-row .progress-bar.complete{border:1px solid #2a9b39}.wpforms-admin-settings .wpforms-setting-row .progress-bar.complete .bar{background-color:#2a9b39}.wpforms-admin-settings .wpforms-setting-row .progress-bar.complete .bar:after{content:none;display:none}.wpforms-admin-settings .wpforms-setting-row .progress-bar .bar{display:block;background:#e27730;height:100%;left:0;position:absolute;-webkit-transition:width 0.5s ease-in-out;-moz-transition:width 0.5s ease-in-out;-o-transition:width 0.5s ease-in-out;transition:width 0.5s ease-in-out}@-webkit-keyframes progress{to{background-position:60px 0}}@-moz-keyframes progress{to{background-position:60px 0}}@keyframes progress{to{background-position:60px 0}}.wpforms-admin-settings .wpforms-setting-row .progress-bar .bar:after{content:'';display:block;position:absolute;top:0;left:0;width:100%;height:100%;-webkit-animation:progress 1s linear infinite;-moz-animation:progress 1s linear infinite;animation:progress 1s linear infinite;background-repeat:repeat-x;background-size:60px 60px;background-image:-webkit-linear-gradient(-45deg, transparent 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, transparent 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.wpforms-admin-settings .wpforms-setting-label{display:block;float:left;width:200px;padding:0}@media (max-width: 781px){.wpforms-admin-settings .wpforms-setting-label{float:none;width:100%;padding-bottom:15px}}.wpforms-admin-settings .wpforms-setting-label label{display:block;font-weight:600}.wpforms-admin-settings .wpforms-setting-field{display:block;margin:0 0 0 200px;max-width:800px}@media (max-width: 781px){.wpforms-admin-settings .wpforms-setting-field{margin:0}}.wpforms-admin-settings p.submit{margin:0;padding:25px 0}.wpforms-admin-settings .info-area,.wpforms-admin-settings .pre-error{display:block;width:100%;max-width:1000px;height:450px;font-family:Menlo,Monaco,monospace;font-size:12px;background:#fff;box-shadow:none;border:1px solid #ddd;white-space:pre;overflow:auto;padding:20px}.wpforms-admin-settings .pre-error{height:auto;max-height:250px;margin-bottom:20px}.wpforms-admin-settings .checkbox-multiselect-columns{max-width:600px;position:relative}.wpforms-admin-settings .checkbox-multiselect-columns:after{content:".";display:block;height:0;line-height:0;font-size:0;clear:both;min-height:0;visibility:hidden}.wpforms-admin-settings .checkbox-multiselect-columns:before{content:"\f0ec";color:#999;font:normal normal normal 20px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:130px;left:50%;margin:0 0 0 -10px}.wpforms-admin-settings .checkbox-multiselect-columns .header{font-weight:600;font-size:13px;margin:0;padding:0 0 5px 0;text-align:center}.wpforms-admin-settings .checkbox-multiselect-columns .first-column,.wpforms-admin-settings .checkbox-multiselect-columns .second-column{width:45%;float:left}.wpforms-admin-settings .checkbox-multiselect-columns .second-column{float:right}.wpforms-admin-settings .checkbox-multiselect-columns .second-column ul li{padding:10px}.wpforms-admin-settings .checkbox-multiselect-columns ul{background-color:#fff;border:1px solid #ddd;border-radius:3px;position:relative;height:250px;padding:0;overflow-y:auto;margin:0;list-style-type:none}.wpforms-admin-settings .checkbox-multiselect-columns ul li{border-bottom:1px #eee solid;margin:0;font-size:14px}.wpforms-admin-settings .checkbox-multiselect-columns ul li label{display:block;padding:10px 10px 10px 32px;position:relative;vertical-align:baseline}.wpforms-admin-settings .checkbox-multiselect-columns ul li label:hover{background-color:#e27730;color:#fff}.wpforms-admin-settings .checkbox-multiselect-columns ul li label:before{content:"\f0c8";color:#ddd;font:normal normal normal 16px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:12px;left:10px}.wpforms-admin-settings .checkbox-multiselect-columns ul li label.checked{opacity:0.6}.wpforms-admin-settings .checkbox-multiselect-columns ul li label.checked:before{content:"\f14a";color:#2a9b39}.wpforms-admin-settings .checkbox-multiselect-columns ul li input{display:none}.wpforms-admin-settings .checkbox-multiselect-columns .all{color:#999;display:inline-block;font-size:13px;margin:10px 0 0}.wpforms-admin-settings #wpforms-importer-analyze{display:none}.wpforms-admin-settings #wpforms-importer-analyze .process-count,.wpforms-admin-settings #wpforms-importer-analyze p{font-size:14px}.wpforms-admin-settings #wpforms-importer-analyze .upgrade{display:none;font-size:14px}.wpforms-admin-settings #wpforms-importer-analyze .upgrade h5{font-size:18px;font-weight:600;padding:0;margin:30px 0 20px 0}.wpforms-admin-settings #wpforms-importer-analyze .upgrade hr{border:none;border-bottom:1px solid #e4e4e4;margin:40px 0}.wpforms-admin-settings #wpforms-importer-analyze .upgrade .wpforms-btn{margin-right:10px}.wpforms-admin-settings #wpforms-importer-analyze .upgrade ul li{list-style-type:disc;margin-left:14px}.wpforms-admin-settings #wpforms-importer-analyze .upgrade ul li.form{list-style-type:none;margin-left:0;font-weight:700}.wpforms-admin-settings #wpforms-importer-process{display:none}.wpforms-admin-settings #wpforms-importer-process .process-count,.wpforms-admin-settings #wpforms-importer-process .process-completed{font-size:14px}.wpforms-admin-settings #wpforms-importer-process .process-completed{display:none}.wpforms-admin-settings #wpforms-importer-process .status{margin:20px 0 30px;background-color:#fff;border-radius:3px;border:1px solid #ddd;max-height:800px;overflow-y:scroll;display:none}.wpforms-admin-settings #wpforms-importer-process .status .item{border-bottom:1px solid #ddd;padding:20px}.wpforms-admin-settings #wpforms-importer-process .status .item:last-of-type{border:none}.wpforms-admin-settings #wpforms-importer-process .status .item p{font-size:13px;margin:12px 0 0}.wpforms-admin-settings #wpforms-importer-process .status .item ul{font-size:13px;margin:12px 0 0 16px}.wpforms-admin-settings #wpforms-importer-process .status .item ul li{list-style:disc}.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon{display:inline-block;margin:0 10px 0 0}.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon.fa-info-circle{color:#00a0d2}.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon.fa-check{color:#46b450}.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon.fa-exclamation-triangle{color:#ffb900}.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon.fa-times,.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon.fa-exclamation-circle{color:red}.wpforms-admin-settings #wpforms-importer-process .status .item .name{font-size:14px;float:left}.wpforms-admin-settings #wpforms-importer-process .status .item .actions{font-size:14px;float:right}.wpforms-admin-settings #wpforms-importer-process .status .item .actions .sep{color:#ddd}.wpforms-admin-settings .settings-lite-cta{background-color:#fff;border:1px solid #dadada;padding:25px 20px;margin:10px 0 0 0;position:relative}.wpforms-admin-settings .settings-lite-cta .dismiss{position:absolute;top:10px;right:10px;color:#666;font-size:16px}.wpforms-admin-settings .settings-lite-cta h5{margin:0 0 16px;font-size:18px;font-weight:700}.wpforms-admin-settings .settings-lite-cta h6{font-weight:700;font-size:14px;margin:0 0 16px}.wpforms-admin-settings .settings-lite-cta p{color:#555;font-size:14px;margin:0 0 16px}.wpforms-admin-settings .settings-lite-cta p:last-of-type{margin:0}.wpforms-admin-settings .settings-lite-cta p a{color:#e27730}.wpforms-admin-settings .settings-lite-cta p a:hover{color:#b85a1b}.wpforms-admin-settings .settings-lite-cta ul{margin:0;padding:0;width:50%;float:left}@media (max-width: 600px){.wpforms-admin-settings .settings-lite-cta ul{width:100%;float:none}}.wpforms-admin-settings .settings-lite-cta ul li{margin:0;padding:0 0 2px 16px;color:#555;font-size:14px;position:relative}.wpforms-admin-settings .settings-lite-cta ul li:before{content:'+';position:absolute;top:-1px;left:0}.wpforms-admin-settings .settings-lite-cta .list{margin:0 0 16px 0;overflow:auto;max-width:900px}.wpforms-admin-settings .settings-lite-cta .green{color:#218900;font-weight:700}.wpforms-admin-settings .settings-lite-cta .fa-star{color:#ff982d}#wpforms-settings-providers .wpforms-settings-provider{border-bottom:1px solid #ddd;padding:30px 0}#wpforms-settings-providers .wpforms-settings-provider.focus-out{opacity:0.4}#wpforms-settings-providers .wpforms-settings-provider-header{cursor:pointer;max-width:1000px}#wpforms-settings-providers .wpforms-settings-provider-logo{float:left;position:relative}#wpforms-settings-providers .wpforms-settings-provider-logo .fa{position:absolute;top:50%;margin:-9px 0 0 0;left:10px;color:#666;font-size:18px}#wpforms-settings-providers .wpforms-settings-provider-logo img{background:#fff;border:1px solid #ddd;max-width:90px;display:block;margin:0 0 0 40px}#wpforms-settings-providers .wpforms-settings-provider-info{margin:0 0 0 160px;position:relative;padding:20px 0 0}#wpforms-settings-providers .wpforms-settings-provider-info h3{margin:0 0 10px 0;font-size:20px;font-weight:600}#wpforms-settings-providers .wpforms-settings-provider-info p{margin:0;font-size:14px}#wpforms-settings-providers .wpforms-settings-provider-info .connected-indicator{color:#83c11f;width:135px;border:1px solid #83c11f;border-radius:4px;padding:8px 14px;font-size:16px;position:absolute;top:28px;right:0;display:none}#wpforms-settings-providers .connected .wpforms-settings-provider-info .connected-indicator{display:block}#wpforms-settings-providers .wpforms-settings-provider-accounts{margin:0 0 0 160px;display:none;max-width:840px}#wpforms-settings-providers .focus-in .wpforms-settings-provider-accounts{display:block}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul{padding:0;margin:0}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul li{border-bottom:1px solid #ddd;margin:0;padding:10px 0;font-size:14px}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul li:first-of-type{border-top:1px solid #ddd}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul li:last-of-type{margin-bottom:16px}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul span.label{float:left;width:50%}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul span.date{color:#999;float:left;width:35%}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul span.remove{float:right;width:15%;text-align:right}#wpforms-settings-providers .wpforms-settings-provider-accounts-connect{display:none;padding:20px;background-color:#ebf3fb;border:1px solid #0e6cad}#wpforms-settings-providers .wpforms-settings-provider-accounts-connect input[type=text]{background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;display:block;padding:7px 12px;margin:5px 0;width:400px;min-height:35px}#wpforms-settings-providers .wpforms-settings-provider-accounts-connect input[type=text]:focus{border-color:#bbb}#wpforms-settings-providers .focus-in .wpforms-settings-provider-accounts-connect{display:block}#wpforms-settings-providers .wpforms-settings-provider-accounts-connect .fa{display:none}#wpforms-settings-providers .wpforms-settings-provider-accounts-connect p,#wpforms-settings-providers .wpforms-settings-provider-accounts p{margin:0 0 15px 0;font-size:14px}
1
+ .choices{position:relative;margin-bottom:24px;font-size:16px}.choices:focus{outline:none}.choices:last-child{margin-bottom:0}.choices.is-disabled .choices__inner,.choices.is-disabled .choices__input{background-color:#EAEAEA;cursor:not-allowed;user-select:none}.choices.is-disabled .choices__item{cursor:not-allowed}.choices[data-type*="select-one"]{cursor:pointer}.choices[data-type*="select-one"] .choices__inner{padding-bottom:3.0px}.choices[data-type*="select-one"] .choices__input{display:block;width:100% !important;padding:10px !important;border-bottom:1px solid #DDDDDD !important;background-color:#FFFFFF;margin:0 !important}.choices[data-type*="select-one"] .choices__button{background-image:url("../images/cross-inverse.svg");padding:0;background-size:8px;height:100%;position:absolute;top:50%;right:0;margin-top:-10px;margin-right:25px;height:20px;width:20px;border-radius:10em;opacity:.5}.choices[data-type*="select-one"] .choices__button:hover,.choices[data-type*="select-one"] .choices__button:focus{opacity:1}.choices[data-type*="select-one"] .choices__button:focus{box-shadow:0px 0px 0px 2px #0e6cad}.choices[data-type*="select-one"]:after{content:"";height:0;width:0;border-style:solid;border-color:#333333 transparent transparent transparent;border-width:5px;position:absolute;right:11.5px;top:50%;margin-top:-2.5px;pointer-events:none}.choices[data-type*="select-one"].is-open:after{border-color:transparent transparent #333333 transparent;margin-top:-7.5px}.choices[data-type*="select-one"][dir="rtl"]:after{left:11.5px;right:auto}.choices[data-type*="select-one"][dir="rtl"] .choices__button{right:auto;left:0;margin-left:25px;margin-right:0}.choices[data-type*="select-multiple"]:after{content:"";height:0;width:0;border-style:solid;border-color:#333333 transparent transparent transparent;border-width:5px;position:absolute;right:11.5px;top:18px;margin-top:-2.5px;pointer-events:none}.choices[data-type*="select-multiple"].is-open:after{border-color:transparent transparent #333333 transparent;margin-top:-7.5px}.choices[data-type*="select-multiple"] .choices__inner,.choices[data-type*="text"] .choices__inner{cursor:text}.choices[data-type*="select-multiple"] .choices__button,.choices[data-type*="text"] .choices__button{position:relative;display:inline-block;margin-top:0;margin-right:-4px;margin-bottom:0;margin-left:8px;padding-left:16px;border-left:1px solid #0a4f7e;background-image:url("../images/cross.svg");background-size:8px;width:8px;line-height:1;opacity:.75}.choices[data-type*="select-multiple"] .choices__button:hover,.choices[data-type*="select-multiple"] .choices__button:focus,.choices[data-type*="text"] .choices__button:hover,.choices[data-type*="text"] .choices__button:focus{opacity:1}.choices__inner{display:inline-block;vertical-align:top;width:100%;background-color:#fff;padding:4px 7.5px 1px;border:1px solid #DDDDDD;border-radius:3px;font-size:14px;min-height:35px;overflow:hidden}.is-focused .choices__inner,.is-open .choices__inner{border-color:#b7b7b7}.is-open .choices__inner{border-radius:3px 3px 0 0}.is-flipped.is-open .choices__inner{border-radius:0 0 3px 3px}.choices__list{margin:0;padding-left:0;list-style:none}.choices__list--single{display:inline-block;padding:4px 16px 4px 4px;width:100%}[dir="rtl"] .choices__list--single{padding-right:4px;padding-left:16px}.choices__list--single .choices__item{width:100%}.choices__list--multiple{display:inline}.choices__list--multiple .choices__item{display:inline-block;vertical-align:middle;border-radius:3px;padding:3px 10px;font-size:12px;font-weight:500;margin-right:4px;margin-top:0px;margin-bottom:3px;background-color:#0e6cad;border:1px solid #0c5d95;color:#FFFFFF;word-break:break-all}.choices__list--multiple .choices__item[data-deletable]{padding-right:5px}[dir="rtl"] .choices__list--multiple .choices__item{margin-right:0;margin-left:3.75px}.choices__list--multiple .choices__item.is-highlighted{background-color:#0c5d95;border:1px solid #0a4f7e}.is-disabled .choices__list--multiple .choices__item{background-color:#aaaaaa;border:1px solid #919191}.choices__list--dropdown{display:none;z-index:1;position:absolute;width:100%;background-color:#FFFFFF;border:1px solid #DDDDDD;top:100%;margin-top:-1px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;overflow:hidden;word-break:break-all}.choices__list--dropdown.is-active{display:block}.is-open .choices__list--dropdown{border-color:#b7b7b7}.is-flipped .choices__list--dropdown{top:auto;bottom:100%;margin-top:0;margin-bottom:-1px;border-radius:.25rem .25rem 0 0}.choices__list--dropdown .choices__list{position:relative;max-height:300px;overflow:auto;-webkit-overflow-scrolling:touch;will-change:scroll-position}.choices__list--dropdown .choices__item{position:relative;padding:10px;font-size:14px}[dir="rtl"] .choices__list--dropdown .choices__item{text-align:right}@media (min-width: 640px){.choices__list--dropdown .choices__item--selectable{padding-right:100px}.choices__list--dropdown .choices__item--selectable:after{content:attr(data-select-text);font-size:12px;opacity:0;position:absolute;right:10px;top:50%;transform:translateY(-50%)}[dir="rtl"] .choices__list--dropdown .choices__item--selectable{text-align:right;padding-left:100px;padding-right:10px}[dir="rtl"] .choices__list--dropdown .choices__item--selectable:after{right:auto;left:10px}}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:#f2f2f2}.choices__list--dropdown .choices__item--selectable.is-highlighted:after{opacity:.5}.choices__item{cursor:default}.choices__item--selectable{cursor:pointer}.choices__item--disabled{cursor:not-allowed;user-select:none;opacity:.5}.choices__heading{font-weight:600;font-size:12px;padding:10px;border-bottom:1px solid #f7f7f7;color:gray}.choices__button{text-indent:-9999px;-webkit-appearance:none;appearance:none;border:0;background-color:transparent;background-repeat:no-repeat;background-position:center;cursor:pointer}.choices__button:focus{outline:none}.choices__input{display:inline-block;vertical-align:baseline !important;background-color:#f9f9f9;font-size:14px;margin:0 !important;border:0 !important;border-radius:0 !important;max-width:100%;min-height:0 !important;width:auto !important;padding:4px 0 4px 2px !important}.choices__input:focus{outline:0}[dir="rtl"] .choices__input{padding-right:2px;padding-left:0}.choices__placeholder{opacity:.5}.wpforms-admin-page .wpforms-btn{border:0;border-radius:3px;cursor:pointer;display:inline-block;margin:0;text-decoration:none;text-align:center;vertical-align:middle;white-space:nowrap;box-shadow:none}.wpforms-admin-page .wpforms-btn-block{display:block;width:100%}.wpforms-admin-page .wpforms-btn-md{font-size:13px;font-weight:600;padding:8px 12px;min-height:35px}.wpforms-admin-page .wpforms-btn-lg{font-size:16px;font-weight:600;padding:16px 28px}.wpforms-admin-page .wpforms-btn-orange{background-color:#e27730;border-color:#e27730;color:#fff}.wpforms-admin-page .wpforms-btn-orange:hover{background-color:#b85a1b;border-color:#b85a1b}.wpforms-admin-page .wpforms-btn-grey{background-color:#eee;border-color:#ccc;color:#666}.wpforms-admin-page .wpforms-btn-grey:hover{background-color:#d7d7d7;border-color:#ccc;color:#444}.wpforms-admin-page .wpforms-btn-light-grey{background-color:#f5f5f5;border:1px solid #ccc;color:#666}.wpforms-admin-page .wpforms-btn-light-grey:hover{background-color:#eee;color:#444}.wpforms-admin-page .wpforms-btn-trans-green{background-color:none;color:#2a9b39}.wpforms-admin-page .wpforms-btn-trans-green:hover{background-color:#2a9b39;color:#fff}.wpforms-admin-page .wpforms-btn-trans-green .underline{position:relative}.wpforms-admin-page .wpforms-btn-trans-green .underline:after{content:" ";border-bottom:1px dashed #2a9b39;position:absolute;bottom:-5px;left:0;width:100%}.wpforms-admin-page .wpforms-btn-trans-green .dashicons{height:18px}body div.jconfirm *,body div.jconfirm *::before,body div.jconfirm *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body div.jconfirm div.jconfirm-box-container div.jconfirm-box{border-radius:0;box-shadow:0 2px 6px rgba(0,0,0,0.2)}body div.jconfirm div.jconfirm-box-container div.jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.4);top:8px;right:8px}body div.jconfirm div.jconfirm-box-container div.jconfirm-box div.jconfirm-closeIcon:hover{color:rgba(0,0,0,0.8)}body div.jconfirm div.jconfirm-box div.jconfirm-title-c{margin:0 0 26px 0 !important;padding:0 !important}body div.jconfirm div.jconfirm-box div.jconfirm-title-c span.jconfirm-icon-c{margin:0 !important;color:#c4c4c4 !important}body div.jconfirm div.jconfirm-box div.jconfirm-title-c span.jconfirm-title{display:block;color:#333}body div.jconfirm div.jconfirm-box div.jconfirm-title-c span.jconfirm-icon-c+span.jconfirm-title{margin-top:20px !important}body div.jconfirm div.jconfirm-box div.jconfirm-content-pane{margin-bottom:26px;display:block}body div.jconfirm div.jconfirm-box div.jconfirm-content-pane .jconfirm-content{overflow:inherit}body div.jconfirm div.jconfirm-box div.jconfirm-content{font-size:16px;color:#555;line-height:1.4}body div.jconfirm div.jconfirm-box div.jconfirm-content.lite-upgrade p{font-size:18px;padding:0 20px}body div.jconfirm div.jconfirm-box div.jconfirm-content p{margin:0 0 16px;font-size:16px;line-height:1.5}body div.jconfirm div.jconfirm-box div.jconfirm-content p:last-of-type{margin:0}body div.jconfirm div.jconfirm-box div.jconfirm-content p.large{font-size:18px}body div.jconfirm div.jconfirm-box div.jconfirm-content p.small{font-size:14px}body div.jconfirm div.jconfirm-box div.jconfirm-content .already-purchased{font-size:12px;color:#ccc;text-decoration:none}body div.jconfirm div.jconfirm-box div.jconfirm-content .already-purchased:hover{text-decoration:underline}body div.jconfirm div.jconfirm-box div.jconfirm-buttons .already-purchased{display:block;font-size:12px;color:#aaa;text-decoration:none;padding-top:20px}body div.jconfirm div.jconfirm-box div.jconfirm-buttons .already-purchased:hover{color:#999;text-decoration:underline}body div.jconfirm div.jconfirm-box .discount-note{text-align:center;margin:30px 0 0}body div.jconfirm div.jconfirm-box .discount-note p{background-color:#faffac;margin:0 -30px;padding:24px 60px 20px;font-size:15px;color:#4d4d4d;position:relative}body div.jconfirm div.jconfirm-box .discount-note p:after{content:'\f058';display:inline-block;font:normal normal normal 14px/1 FontAwesome;background-color:#fff;font-size:26px;border-radius:50%;padding:5px 6px;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:-20px;right:50%;margin-right:-18px;color:#3abc01}body div.jconfirm div.jconfirm-box .discount-note span{font-weight:700;color:#3abc01}body div.jconfirm div.jconfirm-box .discount-note a{color:#aaa;display:block;margin-top:12px}body div.jconfirm div.jconfirm-box input[type=text]{display:block;width:99%;border:1px solid #d6d6d6;padding:10px;box-shadow:none;margin:20px auto 0 auto}body div.jconfirm div.jconfirm-box #wpforms-embed-shortcode{margin:20px 0;text-align:center;font-size:24px;padding:8px 5px}body div.jconfirm div.jconfirm-box #wpforms-embed-shortcode:disabled{color:#333}body div.jconfirm div.jconfirm-box button.btn-confirm{background-color:#e27730;color:#fff;outline:none}body div.jconfirm div.jconfirm-box button.btn-confirm:hover{background-color:#b85a1b;border-color:#b85a1b}body div.jconfirm div.jconfirm-box .error{display:none;color:red}body div.jconfirm div.jconfirm-box .wpforms-error{border:1px solid #ebccd1 !important}body div.jconfirm div.jconfirm-box .jconfirm-title-c .jconfirm-icon-c{-webkit-transition:none !important;transition:none !important;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important;font-size:45px !important}body .choices{text-align:left}body .choices input[type=text].choices__input{display:inline-block !important}.wpforms-admin-page .wpforms-alert{padding:16px;margin-bottom:18px;border:1px solid transparent}.wpforms-admin-page .wpforms-alert h4{margin-top:0;color:inherit}.wpforms-admin-page .wpforms-alert p{margin:0 0 15px 0}.wpforms-admin-page .wpforms-alert p:last-of-type{margin:0}.wpforms-admin-page .wpforms-alert.wpforms-alert-nomargin{margin:0}.wpforms-admin-page .wpforms-alert.wpforms-alert-small{font-size:12px}.wpforms-admin-page .wpforms-alert.wpforms-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wpforms-admin-page .wpforms-alert.wpforms-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.wpforms-admin-page .wpforms-alert.wpforms-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.wpforms-admin-page .wpforms-alert.wpforms-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.wpforms-flag{width:16px;height:16px;background:url(../images/flags.png) no-repeat;display:inline-block}.wpforms-flag.wpforms-flag-ad{background-position:-16px 0}.wpforms-flag.wpforms-flag-ae{background-position:-32px 0}.wpforms-flag.wpforms-flag-af{background-position:-48px 0}.wpforms-flag.wpforms-flag-ag{background-position:-64px 0}.wpforms-flag.wpforms-flag-ai{background-position:-80px 0}.wpforms-flag.wpforms-flag-al{background-position:-96px 0}.wpforms-flag.wpforms-flag-am{background-position:-112px 0}.wpforms-flag.wpforms-flag-an{background-position:-128px 0}.wpforms-flag.wpforms-flag-ao{background-position:-144px 0}.wpforms-flag.wpforms-flag-ar{background-position:-160px 0}.wpforms-flag.wpforms-flag-as{background-position:-176px 0}.wpforms-flag.wpforms-flag-at{background-position:-192px 0}.wpforms-flag.wpforms-flag-au{background-position:-208px 0}.wpforms-flag.wpforms-flag-aw{background-position:-224px 0}.wpforms-flag.wpforms-flag-az{background-position:0 -16px}.wpforms-flag.wpforms-flag-ba{background-position:-16px -16px}.wpforms-flag.wpforms-flag-bb{background-position:-32px -16px}.wpforms-flag.wpforms-flag-bd{background-position:-48px -16px}.wpforms-flag.wpforms-flag-be{background-position:-64px -16px}.wpforms-flag.wpforms-flag-bf{background-position:-80px -16px}.wpforms-flag.wpforms-flag-bg{background-position:-96px -16px}.wpforms-flag.wpforms-flag-bh{background-position:-112px -16px}.wpforms-flag.wpforms-flag-bi{background-position:-128px -16px}.wpforms-flag.wpforms-flag-bj{background-position:-144px -16px}.wpforms-flag.wpforms-flag-bm{background-position:-160px -16px}.wpforms-flag.wpforms-flag-bn{background-position:-176px -16px}.wpforms-flag.wpforms-flag-bo{background-position:-192px -16px}.wpforms-flag.wpforms-flag-br{background-position:-208px -16px}.wpforms-flag.wpforms-flag-bs{background-position:-224px -16px}.wpforms-flag.wpforms-flag-bt{background-position:0 -32px}.wpforms-flag.wpforms-flag-bw{background-position:-16px -32px}.wpforms-flag.wpforms-flag-by{background-position:-32px -32px}.wpforms-flag.wpforms-flag-bz{background-position:-48px -32px}.wpforms-flag.wpforms-flag-ca{background-position:-64px -32px}.wpforms-flag.wpforms-flag-cd{background-position:-80px -32px}.wpforms-flag.wpforms-flag-cf{background-position:-96px -32px}.wpforms-flag.wpforms-flag-cg{background-position:-112px -32px}.wpforms-flag.wpforms-flag-ch{background-position:-128px -32px}.wpforms-flag.wpforms-flag-ci{background-position:-144px -32px}.wpforms-flag.wpforms-flag-ck{background-position:-160px -32px}.wpforms-flag.wpforms-flag-cl{background-position:-176px -32px}.wpforms-flag.wpforms-flag-cm{background-position:-192px -32px}.wpforms-flag.wpforms-flag-cn{background-position:-208px -32px}.wpforms-flag.wpforms-flag-co{background-position:-224px -32px}.wpforms-flag.wpforms-flag-cr{background-position:0 -48px}.wpforms-flag.wpforms-flag-cu{background-position:-16px -48px}.wpforms-flag.wpforms-flag-cv{background-position:-32px -48px}.wpforms-flag.wpforms-flag-cy{background-position:-48px -48px}.wpforms-flag.wpforms-flag-cz{background-position:-64px -48px}.wpforms-flag.wpforms-flag-de{background-position:-80px -48px}.wpforms-flag.wpforms-flag-dj{background-position:-96px -48px}.wpforms-flag.wpforms-flag-dk{background-position:-112px -48px}.wpforms-flag.wpforms-flag-dm{background-position:-128px -48px}.wpforms-flag.wpforms-flag-do{background-position:-144px -48px}.wpforms-flag.wpforms-flag-dz{background-position:-160px -48px}.wpforms-flag.wpforms-flag-ec{background-position:-176px -48px}.wpforms-flag.wpforms-flag-ee{background-position:-192px -48px}.wpforms-flag.wpforms-flag-eg{background-position:-208px -48px}.wpforms-flag.wpforms-flag-eh{background-position:-224px -48px}.wpforms-flag.wpforms-flag-er{background-position:0 -64px}.wpforms-flag.wpforms-flag-es{background-position:-16px -64px}.wpforms-flag.wpforms-flag-et{background-position:-32px -64px}.wpforms-flag.wpforms-flag-fi{background-position:-48px -64px}.wpforms-flag.wpforms-flag-fj{background-position:-64px -64px}.wpforms-flag.wpforms-flag-fm{background-position:-80px -64px}.wpforms-flag.wpforms-flag-fo{background-position:-96px -64px}.wpforms-flag.wpforms-flag-fr{background-position:-112px -64px}.wpforms-flag.wpforms-flag-ga{background-position:-128px -64px}.wpforms-flag.wpforms-flag-gb{background-position:-144px -64px}.wpforms-flag.wpforms-flag-gd{background-position:-160px -64px}.wpforms-flag.wpforms-flag-ge{background-position:-176px -64px}.wpforms-flag.wpforms-flag-gg{background-position:-192px -64px}.wpforms-flag.wpforms-flag-gh{background-position:-208px -64px}.wpforms-flag.wpforms-flag-gi{background-position:-224px -64px}.wpforms-flag.wpforms-flag-gl{background-position:0 -80px}.wpforms-flag.wpforms-flag-gm{background-position:-16px -80px}.wpforms-flag.wpforms-flag-gn{background-position:-32px -80px}.wpforms-flag.wpforms-flag-gp{background-position:-48px -80px}.wpforms-flag.wpforms-flag-gq{background-position:-64px -80px}.wpforms-flag.wpforms-flag-gr{background-position:-80px -80px}.wpforms-flag.wpforms-flag-gt{background-position:-96px -80px}.wpforms-flag.wpforms-flag-gu{background-position:-112px -80px}.wpforms-flag.wpforms-flag-gw{background-position:-128px -80px}.wpforms-flag.wpforms-flag-gy{background-position:-144px -80px}.wpforms-flag.wpforms-flag-hk{background-position:-160px -80px}.wpforms-flag.wpforms-flag-hn{background-position:-176px -80px}.wpforms-flag.wpforms-flag-hr{background-position:-192px -80px}.wpforms-flag.wpforms-flag-ht{background-position:-208px -80px}.wpforms-flag.wpforms-flag-hu{background-position:-224px -80px}.wpforms-flag.wpforms-flag-id{background-position:0 -96px}.wpforms-flag.wpforms-flag-ie{background-position:-16px -96px}.wpforms-flag.wpforms-flag-il{background-position:-32px -96px}.wpforms-flag.wpforms-flag-im{background-position:-48px -96px}.wpforms-flag.wpforms-flag-in{background-position:-64px -96px}.wpforms-flag.wpforms-flag-iq{background-position:-80px -96px}.wpforms-flag.wpforms-flag-ir{background-position:-96px -96px}.wpforms-flag.wpforms-flag-is{background-position:-112px -96px}.wpforms-flag.wpforms-flag-it{background-position:-128px -96px}.wpforms-flag.wpforms-flag-je{background-position:-144px -96px}.wpforms-flag.wpforms-flag-jm{background-position:-160px -96px}.wpforms-flag.wpforms-flag-jo{background-position:-176px -96px}.wpforms-flag.wpforms-flag-jp{background-position:-192px -96px}.wpforms-flag.wpforms-flag-ke{background-position:-208px -96px}.wpforms-flag.wpforms-flag-kg{background-position:-224px -96px}.wpforms-flag.wpforms-flag-kh{background-position:0 -112px}.wpforms-flag.wpforms-flag-ki{background-position:-16px -112px}.wpforms-flag.wpforms-flag-km{background-position:-32px -112px}.wpforms-flag.wpforms-flag-kn{background-position:-48px -112px}.wpforms-flag.wpforms-flag-kp{background-position:-64px -112px}.wpforms-flag.wpforms-flag-kr{background-position:-80px -112px}.wpforms-flag.wpforms-flag-kw{background-position:-96px -112px}.wpforms-flag.wpforms-flag-ky{background-position:-112px -112px}.wpforms-flag.wpforms-flag-kz{background-position:-128px -112px}.wpforms-flag.wpforms-flag-la{background-position:-144px -112px}.wpforms-flag.wpforms-flag-lb{background-position:-160px -112px}.wpforms-flag.wpforms-flag-lc{background-position:-176px -112px}.wpforms-flag.wpforms-flag-li{background-position:-192px -112px}.wpforms-flag.wpforms-flag-lk{background-position:-208px -112px}.wpforms-flag.wpforms-flag-lr{background-position:-224px -112px}.wpforms-flag.wpforms-flag-ls{background-position:0 -128px}.wpforms-flag.wpforms-flag-lt{background-position:-16px -128px}.wpforms-flag.wpforms-flag-lu{background-position:-32px -128px}.wpforms-flag.wpforms-flag-lv{background-position:-48px -128px}.wpforms-flag.wpforms-flag-ly{background-position:-64px -128px}.wpforms-flag.wpforms-flag-ma{background-position:-80px -128px}.wpforms-flag.wpforms-flag-mc{background-position:-96px -128px}.wpforms-flag.wpforms-flag-md{background-position:-112px -128px}.wpforms-flag.wpforms-flag-me{background-position:-128px -128px}.wpforms-flag.wpforms-flag-mg{background-position:-144px -128px}.wpforms-flag.wpforms-flag-mh{background-position:-160px -128px}.wpforms-flag.wpforms-flag-mk{background-position:-176px -128px}.wpforms-flag.wpforms-flag-ml{background-position:-192px -128px}.wpforms-flag.wpforms-flag-mm{background-position:-208px -128px}.wpforms-flag.wpforms-flag-mn{background-position:-224px -128px}.wpforms-flag.wpforms-flag-mo{background-position:0 -144px}.wpforms-flag.wpforms-flag-mq{background-position:-16px -144px}.wpforms-flag.wpforms-flag-mr{background-position:-32px -144px}.wpforms-flag.wpforms-flag-ms{background-position:-48px -144px}.wpforms-flag.wpforms-flag-mt{background-position:-64px -144px}.wpforms-flag.wpforms-flag-mu{background-position:-80px -144px}.wpforms-flag.wpforms-flag-mv{background-position:-96px -144px}.wpforms-flag.wpforms-flag-mw{background-position:-112px -144px}.wpforms-flag.wpforms-flag-mx{background-position:-128px -144px}.wpforms-flag.wpforms-flag-my{background-position:-144px -144px}.wpforms-flag.wpforms-flag-mz{background-position:-160px -144px}.wpforms-flag.wpforms-flag-na{background-position:-176px -144px}.wpforms-flag.wpforms-flag-nc{background-position:-192px -144px}.wpforms-flag.wpforms-flag-ne{background-position:-208px -144px}.wpforms-flag.wpforms-flag-ng{background-position:-224px -144px}.wpforms-flag.wpforms-flag-ni{background-position:0 -160px}.wpforms-flag.wpforms-flag-nl{background-position:-16px -160px}.wpforms-flag.wpforms-flag-no{background-position:-32px -160px}.wpforms-flag.wpforms-flag-np{background-position:-48px -160px}.wpforms-flag.wpforms-flag-nr{background-position:-64px -160px}.wpforms-flag.wpforms-flag-nz{background-position:-80px -160px}.wpforms-flag.wpforms-flag-om{background-position:-96px -160px}.wpforms-flag.wpforms-flag-pa{background-position:-112px -160px}.wpforms-flag.wpforms-flag-pe{background-position:-128px -160px}.wpforms-flag.wpforms-flag-pf{background-position:-144px -160px}.wpforms-flag.wpforms-flag-pg{background-position:-160px -160px}.wpforms-flag.wpforms-flag-ph{background-position:-176px -160px}.wpforms-flag.wpforms-flag-pk{background-position:-192px -160px}.wpforms-flag.wpforms-flag-pl{background-position:-208px -160px}.wpforms-flag.wpforms-flag-pr{background-position:-224px -160px}.wpforms-flag.wpforms-flag-ps{background-position:0 -176px}.wpforms-flag.wpforms-flag-pt{background-position:-16px -176px}.wpforms-flag.wpforms-flag-pw{background-position:-32px -176px}.wpforms-flag.wpforms-flag-py{background-position:-48px -176px}.wpforms-flag.wpforms-flag-qa{background-position:-64px -176px}.wpforms-flag.wpforms-flag-re{background-position:-80px -176px}.wpforms-flag.wpforms-flag-ro{background-position:-96px -176px}.wpforms-flag.wpforms-flag-rs{background-position:-112px -176px}.wpforms-flag.wpforms-flag-ru{background-position:-128px -176px}.wpforms-flag.wpforms-flag-rw{background-position:-144px -176px}.wpforms-flag.wpforms-flag-sa{background-position:-160px -176px}.wpforms-flag.wpforms-flag-sb{background-position:-176px -176px}.wpforms-flag.wpforms-flag-sc{background-position:-192px -176px}.wpforms-flag.wpforms-flag-sd{background-position:-208px -176px}.wpforms-flag.wpforms-flag-se{background-position:-224px -176px}.wpforms-flag.wpforms-flag-sg{background-position:0 -192px}.wpforms-flag.wpforms-flag-si{background-position:-16px -192px}.wpforms-flag.wpforms-flag-sk{background-position:-32px -192px}.wpforms-flag.wpforms-flag-sl{background-position:-48px -192px}.wpforms-flag.wpforms-flag-sm{background-position:-64px -192px}.wpforms-flag.wpforms-flag-sn{background-position:-80px -192px}.wpforms-flag.wpforms-flag-so{background-position:-96px -192px}.wpforms-flag.wpforms-flag-sr{background-position:-112px -192px}.wpforms-flag.wpforms-flag-st{background-position:-128px -192px}.wpforms-flag.wpforms-flag-sv{background-position:-144px -192px}.wpforms-flag.wpforms-flag-sy{background-position:-160px -192px}.wpforms-flag.wpforms-flag-sz{background-position:-176px -192px}.wpforms-flag.wpforms-flag-tc{background-position:-192px -192px}.wpforms-flag.wpforms-flag-td{background-position:-208px -192px}.wpforms-flag.wpforms-flag-tg{background-position:-224px -192px}.wpforms-flag.wpforms-flag-th{background-position:0 -208px}.wpforms-flag.wpforms-flag-tj{background-position:-16px -208px}.wpforms-flag.wpforms-flag-tl{background-position:-32px -208px}.wpforms-flag.wpforms-flag-tm{background-position:-48px -208px}.wpforms-flag.wpforms-flag-tn{background-position:-64px -208px}.wpforms-flag.wpforms-flag-to{background-position:-80px -208px}.wpforms-flag.wpforms-flag-tr{background-position:-96px -208px}.wpforms-flag.wpforms-flag-tt{background-position:-112px -208px}.wpforms-flag.wpforms-flag-tv{background-position:-128px -208px}.wpforms-flag.wpforms-flag-tw{background-position:-144px -208px}.wpforms-flag.wpforms-flag-tz{background-position:-160px -208px}.wpforms-flag.wpforms-flag-ua{background-position:-176px -208px}.wpforms-flag.wpforms-flag-ug{background-position:-192px -208px}.wpforms-flag.wpforms-flag-us{background-position:-208px -208px}.wpforms-flag.wpforms-flag-uy{background-position:-224px -208px}.wpforms-flag.wpforms-flag-uz{background-position:0 -224px}.wpforms-flag.wpforms-flag-va{background-position:-16px -224px}.wpforms-flag.wpforms-flag-vc{background-position:-32px -224px}.wpforms-flag.wpforms-flag-ve{background-position:-48px -224px}.wpforms-flag.wpforms-flag-vg{background-position:-64px -224px}.wpforms-flag.wpforms-flag-vi{background-position:-80px -224px}.wpforms-flag.wpforms-flag-vn{background-position:-96px -224px}.wpforms-flag.wpforms-flag-vu{background-position:-112px -224px}.wpforms-flag.wpforms-flag-ws{background-position:-128px -224px}.wpforms-flag.wpforms-flag-ye{background-position:-144px -224px}.wpforms-flag.wpforms-flag-za{background-position:-160px -224px}.wpforms-flag.wpforms-flag-zm{background-position:-176px -224px}.wpforms-flag.wpforms-flag-zw{background-position:-192px -224px}#wpforms-header-temp{position:relative;margin:0;position:absolute;top:-1px;left:20px;right:20px;z-index:99}#wpforms-header{border-top:3px solid #e27730;padding:22px 20px}#wpforms-header img{display:block;margin:0;max-width:235px}@media (max-width: 782px){#wpforms-header img{max-width:200px}}.wpforms-admin-wrap .page-title{background-color:#fff;margin:0 0 20px 0;padding:15px 20px}.wpforms-admin-wrap .page-title .add-new-h2{margin-left:28px}.wpforms-admin-tabs{background-color:#fff;margin:0 0 20px 0;padding:0 20px;list-style:none;overflow:auto;font-size:14px}.wpforms-admin-tabs li{margin:0 30px 0 0;padding:0;float:left}.wpforms-admin-tabs li:last-of-type{margin:0}.wpforms-admin-tabs li a{color:#666;display:block;padding:20px 0 18px 0;text-decoration:none;border-bottom:2px solid #fff;box-shadow:none}.wpforms-admin-tabs li a:hover{border-color:#999}.wpforms-admin-tabs li a.active{border-color:#e27730}#wpcontent{padding-left:0 !important;position:relative}@media (max-width: 600px){#wpcontent{padding-top:46px}}@media (max-width: 600px){#wpbody{padding-top:0}}.wpforms-admin-page #screen-meta-links,.wpforms-admin-page #screen-meta{display:none}.wpforms-admin-page .video-container{position:relative;padding-bottom:56.1%;height:0;overflow:hidden}.wpforms-admin-page .video-container iframe,.wpforms-admin-page .video-container object,.wpforms-admin-page .video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.wpforms-admin-page .wpforms-file-upload input[type=file]{width:0.1px;height:0.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.wpforms-admin-page .wpforms-file-upload label{text-overflow:ellipsis;white-space:nowrap;cursor:pointer;display:inline-block;overflow:hidden;padding:0}.wpforms-admin-page .wpforms-file-upload input[type=file]:focus+label,.wpforms-admin-page .wpforms-file-upload input[type=file].has-focus+label{outline:1px dotted #000;outline:-webkit-focus-ring-color auto 5px}.wpforms-admin-page .wpforms-file-upload .fld{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;width:400px;min-height:35px}.wpforms-admin-page .wpforms-file-upload .fld .placeholder{color:#ccc}.wpforms-admin-page .wpforms-file-upload strong .fa{margin-right:8px}.wpforms-admin-page .wpforms-hide{display:none}.wpforms-admin-page .wpforms-h1-placeholder{display:none}.wpforms-admin-page .notice{display:none}.wpforms-admin-wrap{margin:0}.wpforms-admin-wrap .notice{margin-left:20px !important;margin-right:20px !important}.wpforms-admin-content{padding-left:20px;padding-right:20px}.wpforms-admin-content:before{content:" ";display:table}.wpforms-admin-content:after{clear:both;content:" ";display:table}.wpforms-clear:before{content:" ";display:table}.wpforms-clear:after{clear:both;content:" ";display:table}.wpforms-admin-columns>div[class*="-column-"]{float:left}.wpforms-admin-columns .wpforms-admin-column-20{width:20%}.wpforms-admin-columns .wpforms-admin-column-33{width:33.33333%}.wpforms-admin-columns .wpforms-admin-column-40{width:40%}.wpforms-admin-columns .wpforms-admin-column-50{width:50%}.wpforms-admin-columns .wpforms-admin-column-60{width:60%}.wpforms-admin-columns .wpforms-admin-column-80{width:80%}.wpforms-admin-columns .wpforms-admin-column-last{float:right !important}.wpforms-admin-columns:after{content:"";display:table;clear:both}#wpforms-overview .tablenav.top{margin-top:0}#wpforms-overview .wp-list-table .column-id{width:30px}#wpforms-overview .wp-list-table .column-entries{width:70px}#wpforms-overview .wp-list-table .column-shortcode{width:150px}#wpforms-overview .wp-list-table .column-created{width:145px}#wpforms-entries-single #poststuff{padding:0}#wpforms-entries-single .postbox .hndle{cursor:default !important}#wpforms-entries-single .wpforms-entry-navigation{font-size:13px;line-height:29px;float:right;position:relative;padding-top:2px;padding-right:1px;white-space:nowrap}@media (max-width: 600px){#wpforms-entries-single .wpforms-entry-navigation{display:none}}#wpforms-entries-single .wpforms-entry-navigation .add-new-h2{top:auto;margin:0;padding:4px 0px;text-align:center}@media (max-width: 782px){#wpforms-entries-single .wpforms-entry-navigation .add-new-h2{font-size:13px}}#wpforms-entries-single .wpforms-entry-navigation .add-new-h2 .dashicons{font-size:16px;height:auto;width:28px;line-height:29px}#wpforms-entries-single .wpforms-entry-navigation .add-new-h2.inactive{opacity:0.5;pointer-events:none;cursor:default}#wpforms-entries-single .wpforms-entry-navigation .wpforms-entry-navigation-text{display:inline-block;margin-right:10px}#wpforms-entries-single .wpforms-entry-navigation .wpforms-entry-current{top:auto;margin:0 -5px 0 -3px;text-align:center;padding:4px 10px;position:relative;text-decoration:none;border:1px solid #ccc;-webkit-border-radius:2px;border-radius:2px;background:#fff;font-size:13px;line-height:29px;text-transform:center}#wpforms-entries-single #wpforms-entry-fields h2.hndle{font-size:18px}#wpforms-entries-single #wpforms-entry-fields h2.hndle .dashicons{font-size:16px;height:16px;width:16px;margin:4px 4px 0 0;color:#e27730}#wpforms-entries-single #wpforms-entry-fields .no-fields{padding:12px;margin:0}#wpforms-entries-single #wpforms-entry-fields .inside{padding:0;margin:0}#wpforms-entries-single #wpforms-entry-fields .inside p{padding:0;margin:0}#wpforms-entries-single #wpforms-entry-fields .inside .wpforms-entry-field-name{font-weight:600;background:#ebf3fb;padding:8px 12px}#wpforms-entries-single #wpforms-entry-fields .inside .wpforms-entry-field-value{background:#fff;padding:8px 12px}#wpforms-entries-single #wpforms-entry-fields .inside .empty .wpforms-entry-field-value{font-style:italic;color:#999}#wpforms-entries-single #wpforms-entry-fields .wpforms-empty-field-toggle{float:right;text-decoration:none;padding:5px 0 0}#wpforms-entries-single #wpforms-entry-notes .inside{margin:0;padding:0}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-new{padding:10px}#wpforms-entries-single #wpforms-entry-notes form{display:none}#wpforms-entries-single #wpforms-entry-notes .btns{overflow:auto;padding:8px 0}#wpforms-entries-single #wpforms-entry-notes .no-notes{margin:0;padding:4px 10px 8px}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-single{padding:10px;border-top:1px solid #e3e1e3}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-single p:last-of-type{margin-bottom:0}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-single.even{background-color:#f9f9f9}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline{color:#888;margin-bottom:10px}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .sep{color:#ddd}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .notes-user{text-decoration:none;font-weight:600}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .note-delete{color:#a00;text-decoration:none}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .note-delete:hover{color:red;text-decoration:none}#wpforms-entries-single #wpforms-entry-details .inside,#wpforms-entries-single #wpforms-entry-payment .inside,#wpforms-entries-single #wpforms-entry-actions .inside{margin:0;padding:0}#wpforms-entries-single .wpforms-entry-details-meta,#wpforms-entries-single .wpforms-entry-actions-meta{padding:6px 0 0}#wpforms-entries-single .wpforms-entry-details-meta p,#wpforms-entries-single .wpforms-entry-payment-meta p,#wpforms-entries-single .wpforms-entry-actions-meta p{padding:6px 10px 8px;margin:0}#wpforms-entries-single .wpforms-entry-payment-meta{padding:0}#wpforms-entries-single .wpforms-entry-payment-meta p{border-bottom:1px solid #eee;padding:10px}#wpforms-entries-single .wpforms-entry-payment-meta p:last-of-type{border-bottom:0}#wpforms-entries-single .wpforms-entry-details-meta strong,#wpforms-entries-single .wpforms-entry-actions-meta strong{font-weight:600}#wpforms-entries-single .wpforms-entry-details-meta .dashicons,#wpforms-entries-single .wpforms-entry-actions-meta .dashicons{padding:0 2px 0 0;color:#82878A;top:-1px;left:-1px;position:relative;text-decoration:none}#wpforms-entries-single #wpforms-entry-details .submitdelete{color:#a00;text-decoration:none;padding:1px 2px}#wpforms-entries-single #wpforms-entry-details .submitdelete:hover{color:red}#wpforms-entries-single .wpforms-entry-actions-meta a{text-decoration:none}#wpforms-entries-single .wpforms-entry-actions-meta a:hover{text-decoration:underline}#wpforms-entries-single #wpforms-entry-geolocation .inside{padding:0;margin:0}#wpforms-entries-single #wpforms-entry-geolocation ul{margin:0}#wpforms-entries-single #wpforms-entry-geolocation ul li{border-bottom:1px solid #eee;margin:0;overflow:auto}#wpforms-entries-single #wpforms-entry-geolocation ul li:last-of-type{border-bottom:0}#wpforms-entries-single #wpforms-entry-geolocation .wpforms-geolocation-meta{width:85px;float:left;border-right:1px solid #eee;padding:10px 20px 10px 12px}#wpforms-entries-single #wpforms-entry-geolocation .wpforms-geolocation-value{display:inline-block;padding:10px 12px 10px 20px}#wpforms-entries-single #wpforms-entry-geolocation .wpforms-flag{vertical-align:text-top;margin-right:4px}#wpforms-entries-list .form-details{border-bottom:1px solid #ddd;padding-bottom:15px;margin:0 0 10px}#wpforms-entries-list .form-details .form-details-sub{color:#999;display:block;font-size:10px;text-transform:uppercase;margin:0 0 8px 0}#wpforms-entries-list .form-details .form-details-title{float:left;font-size:18px;font-weight:400;margin:0}@media (max-width: 1199px){#wpforms-entries-list .form-details .form-details-title{float:none;margin-bottom:10px}}#wpforms-entries-list .form-details .form-selector{display:inline-block;position:relative}#wpforms-entries-list .form-details .form-selector .toggle{border-radius:50%;color:#444;font-size:16px;box-shadow:none}#wpforms-entries-list .form-details .form-selector .toggle:hover,#wpforms-entries-list .form-details .form-selector .toggle.active{background-color:#e3e3e3;outline:none}#wpforms-entries-list .form-details .form-selector .toggle:before{vertical-align:middle}#wpforms-entries-list .form-details .form-selector .form-list{display:none;background:#fff;border-radius:3px;box-shadow:0 2px 8px 0 rgba(0,0,0,0.1);position:absolute;top:27px;left:-108px;width:230px;padding:10px 0;z-index:9991}#wpforms-entries-list .form-details .form-selector .form-list:before{content:" ";position:absolute;top:-10px;left:110px;width:0;height:0;border-style:solid;border-width:0 8px 10px 8px;border-color:transparent transparent #fff transparent}#wpforms-entries-list .form-details .form-selector ul{max-height:196px;overflow-x:hidden;padding:0;margin:0}#wpforms-entries-list .form-details .form-selector ul li{list-style:none;margin:0;font-size:13px}#wpforms-entries-list .form-details .form-selector ul li a{display:block;text-decoration:none;padding:5px 15px;color:#444}#wpforms-entries-list .form-details .form-selector ul li a:hover{background-color:#f7f7f7}#wpforms-entries-list .form-details .form-details-actions{float:right}@media (max-width: 1199px){#wpforms-entries-list .form-details .form-details-actions{float:none}}#wpforms-entries-list .form-details .form-details-actions a{text-decoration:none;display:inline-block;margin:0 12px 0 0}#wpforms-entries-list .form-details .form-details-actions a:last-of-type{margin:0}#wpforms-entries-list .form-details .form-details-actions a .dashicons{width:16px;height:16px;font-size:16px}#wpforms-entries-list .search-box .wpforms-form-search-box-field{max-width:180px;vertical-align:top;margin:0 2px 0 0}#wpforms-entries-list .search-box .wpforms-form-search-box-comparison{max-width:90px;vertical-align:top;margin:0 2px 0 0}#wpforms-entries-list .search-box .wpforms-form-search-box-term{height:28px;margin:0 2px 0 0}#wpforms-entries-list .wpforms-filter-date .wpforms-filter-date-selector{height:28px;background-color:#fff;vertical-align:middle;max-width:210px}#wpforms-entries-list .wpforms-filter-date button{margin:1px 8px 0 0;vertical-align:top}#wpforms-entries-list .wp-list-table .new-entries-notification td{padding:0;text-align:center}#wpforms-entries-list .wp-list-table .new-entries-notification td a{display:none;padding:10px;background-color:#d9edf7}#wpforms-entries-list .wp-list-table .column-indicators{width:35px;text-align:center}#wpforms-entries-list .wp-list-table .column-indicators a:focus{-webkit-box-shadow:none;box-shadow:none}#wpforms-entries-list .wp-list-table .column-indicators .dashicons{width:14px;height:14px;font-size:14px;margin-top:3px}#wpforms-entries-list .wp-list-table .indicator-star .dashicons{margin-right:6px}#wpforms-entries-list .wp-list-table .indicator-star{color:#e4e4e4}#wpforms-entries-list .wp-list-table .indicator-star:hover,#wpforms-entries-list .wp-list-table .indicator-star.unstar{color:#e27730}#wpforms-entries-list .wp-list-table .indicator-read{color:#9ede84}#wpforms-entries-list .wp-list-table .indicator-read:hover,#wpforms-entries-list .wp-list-table .indicator-read.unread{color:#e4e4e4}#wpforms-entries-list .wp-list-table .column-date{width:150px}#wpforms-entries-list .wp-list-table .column-status{width:120px}#wpforms-entries-list .wp-list-table .column-status img{display:inline-block;height:12px;width:auto;margin:0 0 0 3px}#wpforms-entries-list .wp-list-table .column-payment_total{width:100px}#wpforms-entries-list .wp-list-table .column-actions{width:100px}#wpforms-entries-list .wp-list-table .sep{color:#ddd}#wpforms-entries-list .wp-list-table .delete:hover{color:red}#wpforms-entries-list #wpforms-entries-table-edit-columns{float:right;color:#ccc}#wpforms-entries-list #wpforms-entries-table-edit-columns:hover{color:#666}@media screen and (max-width: 782px){.wpforms-admin-content{padding-left:10px;padding-right:10px}.wp-list-table{margin:0 -10px 0 -10px;width:100vw;table-layout:auto}.wp-list-table.entries .column-indicators{width:auto !important}.wp-list-table.entries .indicators .indicator-star{display:none}.wp-list-table.entries .indicators .indicator-read{display:none}.wp-list-table.entries tr:not(.inline-edit-row):not(.no-items) td.column-primary{height:8px;padding:0;z-index:+1;margin-right:0;overflow:visible}.wp-list-table.entries .toggle-row{right:5px;top:15px}.wp-list-table.entries tr:not(.inline-edit-row):not(.no-items) td.column-primary+td{display:block !important}.wp-list-table.entries tr:not(.inline-edit-row):not(.no-items) td.column-primary ~ td{margin-right:5px;min-width:50vw}p.search-box{margin:0;width:auto}input[type=checkbox],input[type=radio]{height:16px;width:16px}}#wpforms-welcome{border-top:3px solid #e27730;color:#555;padding-top:110px}@media (max-width: 767px){#wpforms-welcome{padding-top:64px}}#wpforms-welcome *,#wpforms-welcome *::before,#wpforms-welcome *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpforms-welcome .container{margin:0 auto;max-width:720px;padding:0}#wpforms-welcome .block{padding:40px}@media (max-width: 767px){#wpforms-welcome .block{padding:20px}}#wpforms-welcome img{max-width:100%;height:auto}#wpforms-welcome h1{color:#222;font-size:24px;text-align:center;margin:0 0 16px 0}#wpforms-welcome h5{color:#222;font-size:16px;margin:0 0 8px 0}#wpforms-welcome h6{font-size:16px;font-weight:400;line-height:1.6;text-align:center;margin:0}#wpforms-welcome p{font-size:14px;margin:0 0 20px 0}#wpforms-welcome .button-wrap{max-width:590px;margin:0 auto 0 auto}#wpforms-welcome .button-wrap .left{float:left;width:50%;padding-right:20px}@media (max-width: 767px){#wpforms-welcome .button-wrap .left{float:none;width:100%;padding:0;margin-bottom:20px}}#wpforms-welcome .button-wrap .right{float:right;width:50%;padding-left:20px}@media (max-width: 767px){#wpforms-welcome .button-wrap .right{float:none;width:100%;padding:0}}#wpforms-welcome .intro{background-color:#fff;border:2px solid #e1e1e1;border-radius:2px;margin-bottom:30px;position:relative;padding-top:40px}#wpforms-welcome .intro .sullie{background-color:#fff;border:2px solid #e1e1e1;border-radius:50%;height:110px;width:110px;padding:18px 14px 0 14px;position:absolute;top:-58px;left:50%;margin-left:-55px}#wpforms-welcome .intro .video-thumbnail{display:block;margin:0 auto}#wpforms-welcome .intro .button-wrap{margin-top:25px}#wpforms-welcome .features{background-color:#fff;border:2px solid #e1e1e1;border-bottom:0;border-radius:2px 2px 0 0;position:relative;padding-top:20px;padding-bottom:20px}#wpforms-welcome .features .feature-list{margin-top:60px}#wpforms-welcome .features .feature-block{float:left;width:50%;padding-bottom:35px;overflow:auto}@media (max-width: 767px){#wpforms-welcome .features .feature-block{float:none;width:100%}}#wpforms-welcome .features .feature-block.first{padding-right:20px;clear:both}@media (max-width: 767px){#wpforms-welcome .features .feature-block.first{padding-right:0}}#wpforms-welcome .features .feature-block.last{padding-left:20px}@media (max-width: 767px){#wpforms-welcome .features .feature-block.last{padding-left:0}}#wpforms-welcome .features .feature-block img{float:left;max-width:46px}#wpforms-welcome .features .feature-block h5{margin-left:68px}#wpforms-welcome .features .feature-block p{margin:0;margin-left:68px}#wpforms-welcome .features .button-wrap{margin-top:25px;text-align:center}#wpforms-welcome .upgrade-cta{background-color:#000;border:2px solid #e1e1e1;border-top:0;border-bottom:0;color:#fff}#wpforms-welcome .upgrade-cta h2{color:#fff;font-size:20px;margin:0 0 30px 0}#wpforms-welcome .upgrade-cta ul{display:-ms-flex;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;font-size:15px;margin:0;padding:0}#wpforms-welcome .upgrade-cta ul li{display:block;width:50%;margin:0 0 8px 0;padding:0}#wpforms-welcome .upgrade-cta ul li .dashicons{color:#2a9b39;margin-right:5px}#wpforms-welcome .upgrade-cta .left{float:left;width:66.666666%;padding-right:20px}@media (max-width: 767px){#wpforms-welcome .upgrade-cta .left{float:none;width:100%;padding-right:0;margin-bottom:20px}}#wpforms-welcome .upgrade-cta .right{float:right;width:33.333333%;padding:20px 0 0 20px;text-align:center}@media (max-width: 767px){#wpforms-welcome .upgrade-cta .right{float:none;width:100%;padding-left:0}}#wpforms-welcome .upgrade-cta .right h2{text-align:center;margin:0}#wpforms-welcome .upgrade-cta .right h2 span{display:inline-block;border-bottom:1px solid #555;padding:0 15px 12px}#wpforms-welcome .upgrade-cta .right .price{padding:26px 0}#wpforms-welcome .upgrade-cta .right .price .amount{font-size:48px;font-weight:600;position:relative;display:inline-block}#wpforms-welcome .upgrade-cta .right .price .amount:before{content:'$';position:absolute;top:-8px;left:-16px;font-size:18px}#wpforms-welcome .upgrade-cta .right .price .term{font-size:12px;display:inline-block}#wpforms-welcome .testimonials{background-color:#fff;border:2px solid #e1e1e1;border-top:0;padding:20px 0}#wpforms-welcome .testimonials .testimonial-block{margin:50px 0 0 0}#wpforms-welcome .testimonials .testimonial-block img{border-radius:50%;float:left;max-width:100px;box-shadow:0 0 18px rgba(0,0,0,0.2)}@media (max-width: 767px){#wpforms-welcome .testimonials .testimonial-block img{width:65px}}#wpforms-welcome .testimonials .testimonial-block p{font-size:14px;margin:0 0 12px 140px}@media (max-width: 767px){#wpforms-welcome .testimonials .testimonial-block p{margin-left:100px}}#wpforms-welcome .testimonials .testimonial-block p:last-of-type{margin-bottom:0}#wpforms-welcome .footer{background-color:#f1f1f1;border:2px solid #e1e1e1;border-top:0;border-radius:0 0 2px 2px}#wpforms-welcome.pro .features{border:2px solid #e1e1e1;margin-bottom:30px}#wpforms-welcome.pro .upgrade,#wpforms-welcome.pro .footer{display:none}#wpforms-welcome.pro .testimonials{border:2px solid #e1e1e1}.dashboard_page_wpforms-getting-started .video-container{border:2px solid #e1e1e1}.dashboard_page_wpforms-getting-started #wpfooter,.dashboard_page_wpforms-getting-started div.notice{display:none !important}#wpforms-admin-addons *,#wpforms-admin-addons *::before,#wpforms-admin-addons *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpforms-admin-addons .addons-container{margin-left:-20px;margin-right:-20px}#wpforms-admin-addons .unlock-msg{padding:0 20px;margin-top:-20px;clear:both}#wpforms-admin-addons #wpforms-admin-addons-search{background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;vertical-align:middle;padding:7px 12px;margin:-3px 10px 0 0;width:200px;min-height:35px;float:right}#wpforms-admin-addons #wpforms-admin-addons-search:focus{border-color:#bbb}#wpforms-admin-addons .addon-container{padding:0 20px;float:left;width:33.333333%}@media (max-width: 1249px){#wpforms-admin-addons .addon-container{width:50%}}@media (max-width: 767px){#wpforms-admin-addons .addon-container{width:100%;margin-bottom:20px}}#wpforms-admin-addons h4{font-size:17px;font-weight:700}#wpforms-admin-addons .addon-item{background-color:#fff;border:1px solid #ddd;border-radius:3px;margin:0 0 40px 0}@media (max-width: 767px){#wpforms-admin-addons .addon-item{margin:0 0}}#wpforms-admin-addons .addon-item img{border:1px solid #eee;float:left;max-width:75px}#wpforms-admin-addons .addon-item h5{margin:0 0 10px 100px;font-size:16px}#wpforms-admin-addons .addon-item p{margin:0 0 0 100px}#wpforms-admin-addons .addon-item .details{padding:30px 20px}#wpforms-admin-addons .addon-item .actions{background-color:#f7f7f7;border-top:1px solid #ddd;padding:20px;position:relative}#wpforms-admin-addons .addon-item .actions .msg{background-color:#f7f7f7;position:absolute;text-align:center;font-weight:600;top:0;left:0;height:100%;width:100%;z-index:99;padding:20px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-ms-align-items:center;align-items:center;justify-content:center}#wpforms-admin-addons .addon-item .actions .msg.success{color:#2a9b39}#wpforms-admin-addons .addon-item .actions .msg.error{color:red}#wpforms-admin-addons .addon-item .status{float:left;padding-top:8px}#wpforms-admin-addons .addon-item .status .status-inactive{color:red}#wpforms-admin-addons .addon-item .status .status-download{color:#666}#wpforms-admin-addons .addon-item .status .status-active{color:#2a9b39}#wpforms-admin-addons .addon-item .upgrade-button{text-align:center}#wpforms-admin-addons .addon-item .upgrade-button a{font-weight:600;width:140px;text-align:center;padding:8px 5px}#wpforms-admin-addons .addon-item .action-button{float:right}#wpforms-admin-addons .addon-item .action-button button{background:none;border:1px solid #ddd;border-radius:3px;box-shadow:none;cursor:pointer;font-weight:600;width:140px;text-align:center;padding:8px 5px}#wpforms-admin-addons .addon-item .action-button button:hover,#wpforms-admin-addons .addon-item .action-button button.loading{background-color:#e9e9e9}#wpforms-admin-addons .addon-item .action-button button .fa{margin-right:8px}#wpforms-admin-addons .addon-item .action-button button .fa.fa-spinner{margin-right:0}#wpforms-admin-addons .addon-item .action-button button.status-active .fa{color:#2a9b39}#wpforms-admin-addons .addon-item .action-button button.status-inactive .fa{color:red}#wpforms-admin-addons .addon-item .action-button button.status-download .fa{color:#999}#wpforms-admin-addons .addon-item .action-button button.disabled{cursor:default}#wpforms-admin-addons .addon-item .action-button button.loading .fa{color:#666}#wpforms-admin-about *,#wpforms-admin-about *::before,#wpforms-admin-about *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpforms-admin-about .wpforms-admin-about-section{margin:0 20px 20px;padding:30px;background:#fff;border:1px solid #DDDDDD;line-height:2}#wpforms-admin-about .wpforms-admin-about-section h1,#wpforms-admin-about .wpforms-admin-about-section h2,#wpforms-admin-about .wpforms-admin-about-section h3,#wpforms-admin-about .wpforms-admin-about-section h4,#wpforms-admin-about .wpforms-admin-about-section h5{margin-top:0;padding-top:0;line-height:1.6}#wpforms-admin-about .wpforms-admin-about-section h2{font-size:24px}#wpforms-admin-about .wpforms-admin-about-section h3{font-size:18px;margin-bottom:30px;color:#23282C}#wpforms-admin-about .wpforms-admin-about-section ul,#wpforms-admin-about .wpforms-admin-about-section p{font-size:16px}#wpforms-admin-about .wpforms-admin-about-section p{margin-bottom:20px}#wpforms-admin-about .wpforms-admin-about-section p.bigger{font-size:18px}#wpforms-admin-about .wpforms-admin-about-section p.smaller{font-size:14px}#wpforms-admin-about .wpforms-admin-about-section p:last-child{margin-bottom:0}#wpforms-admin-about .wpforms-admin-about-section hr{margin:30px 0}#wpforms-admin-about .wpforms-admin-about-section figure{margin:0}#wpforms-admin-about .wpforms-admin-about-section figure img{width:100%}#wpforms-admin-about .wpforms-admin-about-section figure figcaption{font-size:14px;color:#888888;margin-top:5px;text-align:center;line-height:initial}#wpforms-admin-about .wpforms-admin-about-section .wpforms-admin-column-40{padding-left:15px}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section .wpforms-admin-column-40{width:100%;padding-left:0;padding-top:20px}}#wpforms-admin-about .wpforms-admin-about-section .wpforms-admin-column-60{padding-right:15px}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section .wpforms-admin-column-60{width:100%;padding-right:0}}#wpforms-admin-about .wpforms-admin-about-section ul.list-plain{margin-top:0;margin-bottom:0}#wpforms-admin-about .wpforms-admin-about-section ul.list-plain li{margin-bottom:0}#wpforms-admin-about .wpforms-admin-about-section ul.list-features li .fa{color:#2a9b39;margin:0 8px 0 0}#wpforms-admin-about .wpforms-admin-about-section .fa-star{color:gold}#wpforms-admin-about .wpforms-admin-about-section .no-margin{margin:0 !important}#wpforms-admin-about .wpforms-admin-about-section .no-padding{padding:0 !important}#wpforms-admin-about .wpforms-admin-about-section .centered{text-align:center !important}#wpforms-admin-about .wpforms-admin-about-section-first-form{display:flex}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-first-form{display:block !important}}#wpforms-admin-about .wpforms-admin-about-section-first-form .wpforms-admin-about-section-first-form-text{flex:1;padding-right:30px}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-first-form .wpforms-admin-about-section-first-form-text{flex:none}}#wpforms-admin-about .wpforms-admin-about-section-first-form .wpforms-admin-about-section-first-form-video iframe{border:1px solid #DDDDDD}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-first-form .wpforms-admin-about-section-first-form-video{padding-top:20px}}#wpforms-admin-about .wpforms-admin-about-section-hero{padding:0}#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-main,#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-extra{padding:30px}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-extra .wpforms-admin-column-50{float:none;width:100%}}#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-main{background-color:#FAFAFA;border-bottom:1px solid #DDDDDD}#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-main.no-border{border-bottom:0}#wpforms-admin-about .wpforms-admin-about-section-hero .wpforms-admin-about-section-hero-main p{color:#666}#wpforms-admin-about .wpforms-admin-about-section-hero h3.call-to-action{margin-bottom:-10px}#wpforms-admin-about .wpforms-admin-about-section-hero span.price-20-off{color:#6AB255}#wpforms-admin-about .wpforms-admin-about-section-squashed{margin-bottom:0}#wpforms-admin-about .wpforms-admin-about-section-squashed:not(:last-of-type){border-bottom:0}#wpforms-admin-about .wpforms-admin-about-section-post h2{margin-bottom:-10px}#wpforms-admin-about .wpforms-admin-about-section-post h3{margin-bottom:15px}#wpforms-admin-about .wpforms-admin-about-section-post p:last-of-type{margin-bottom:30px}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-20{padding-right:20px;width:auto}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-20 img{width:270px}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-20{width:20%}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-20 img{width:auto;max-width:100%}}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-80{padding-left:20px;width:calc(100% - 20px - 270px)}@media (max-width: 767px){#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-column-80{width:80%}}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-about-section-post-link{padding:10px 15px;background-color:#DF7739;color:#fff;border-radius:3px;text-decoration:none;margin-top:15px;font-size:14px}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-about-section-post-link:hover{background-color:#B85A1B}#wpforms-admin-about .wpforms-admin-about-section-post .wpforms-admin-about-section-post-link .fa{color:#EDBA9E;vertical-align:middle;margin-left:8px}#wpforms-admin-about .wpforms-admin-about-section-table table{border-collapse:collapse}#wpforms-admin-about .wpforms-admin-about-section-table table tr td{border-bottom:1px solid #DDDDDD;border-right:1px solid #DDDDDD;padding:30px;vertical-align:top}#wpforms-admin-about .wpforms-admin-about-section-table table tr td:last-of-type{border-right:0}#wpforms-admin-about .wpforms-admin-about-section-table table tr:last-child td{border-bottom:none}#wpforms-admin-about .wpforms-admin-about-section-table table p{background-repeat:no-repeat;background-size:15px auto;background-position:0 6px;margin:0}#wpforms-admin-about .wpforms-admin-about-section-table table p.features-full{padding-left:30px;background-image:url(../images/about/icon-full.svg)}#wpforms-admin-about .wpforms-admin-about-section-table table p.features-none{padding-left:30px;background-image:url(../images/about/icon-none.svg)}#wpforms-admin-about .wpforms-admin-about-section-table table p.features-partial{padding-left:30px;background-position:-3px 0;background-size:23px auto;background-image:url(../images/about/icon-partial.svg)}#wpforms-admin-about .wpforms-admin-about-section-table .wpforms-admin-about-section-hero-main{padding:0}#wpforms-admin-about .wpforms-admin-about-section-table .wpforms-admin-about-section-hero-main h3{padding:30px 30px 30px 60px}#wpforms-admin-about .wpforms-admin-about-section-table .wpforms-admin-about-section-hero-main .wpforms-admin-column-33:first-child h3{padding:30px}#wpforms-admin-about #wpforms-admin-addons{padding:0 30px}#wpforms-admin-about #wpforms-admin-addons .addon-container{padding:0 10px}#wpforms-admin-about #wpforms-admin-addons .addon-item .details{padding:20px}#wpforms-admin-about #wpforms-admin-addons .addon-item img{padding:10px}#wpforms-admin-about #wpforms-admin-addons .addon-item img[src*="-mi"]{padding:13px}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button{display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;-webkit-appearance:none;border-radius:3px;border:1px solid #cccccc;background:#f7f7f7;box-shadow:0 1px 0 #cccccc;font-weight:normal}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button:hover,#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button:focus{background:#fafafa;border-color:#999;color:#23282d}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-primary{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-shadow:0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-primary:hover,#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-primary:focus{background:#008ec2;border-color:#006799;color:#fff}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-primary .fa-spinner{color:#fff}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-secondary{color:#555;border-color:#cccccc;background:#f7f7f7;box-shadow:0 1px 0 #cccccc}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-secondary:hover,#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.button-secondary:focus{background:#fafafa;border-color:#999;color:#23282d}#wpforms-admin-about #wpforms-admin-addons .addon-item .action-button .button.disabled{cursor:default}.wpforms-admin-settings *,.wpforms-admin-settings *::before,.wpforms-admin-settings *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wpforms-admin-settings .wpforms-setting-row{border-bottom:1px solid #e4e4e4;padding:30px 0;font-size:14px;line-height:1.3}.wpforms-admin-settings .wpforms-setting-row:first-of-type{padding-top:10px !important}@media (max-width: 781px){.wpforms-admin-settings .wpforms-setting-row{padding:20px 0}}.wpforms-admin-settings .wpforms-setting-row.section-heading{padding:20px 0}.wpforms-admin-settings .wpforms-setting-row.section-heading.no-desc h4{margin:0}.wpforms-admin-settings .wpforms-setting-row.section-heading .wpforms-setting-field{margin:0;max-width:1000px}.wpforms-admin-settings .wpforms-setting-row.tools p,.wpforms-admin-settings .wpforms-setting-row.tools p:first-of-type{margin:0 0 16px 0}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-checkbox input[type=checkbox]{float:left;margin:1px 0 0 0}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-checkbox .desc{margin:0 0 0 30px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-license .wpforms-setting-label{padding-top:8px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-license p.type{margin-top:12px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-text .wpforms-setting-label,.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-number .wpforms-setting-label{padding-top:8px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-select .wpforms-setting-label{padding-top:8px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-radio .wpforms-setting-field input[type=radio]{margin:-3px 10px 0 0}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-radio .wpforms-setting-field label{margin-right:30px;display:inline-block}.wpforms-admin-settings .wpforms-setting-row#wpforms-setting-row-email-template .wpforms-setting-field label:before{content:" ";display:block;width:155px;height:180px;margin:0 0 10px 0}.wpforms-admin-settings .wpforms-setting-row#wpforms-setting-row-email-template .wpforms-setting-field .option-default:before{background:url(../images/settings-email-html.png) center center}.wpforms-admin-settings .wpforms-setting-row#wpforms-setting-row-email-template .wpforms-setting-field .option-none:before{background:url(../images/settings-email-plaintext.png) center center}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-image .wpforms-setting-field img{display:block;margin:0 0 20px 0;max-width:400px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-color .wpforms-color-picker{padding-left:40px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-color .minicolors-input-swatch{top:7px;left:7px;height:21px;width:21px;border-radius:2px}.wpforms-admin-settings .wpforms-setting-row h4{font-size:20px;font-weight:700;margin:0 0 6px 0}.wpforms-admin-settings .wpforms-setting-row h3{font-size:24px;font-weight:600;margin:0 0 20px 0}.wpforms-admin-settings .wpforms-setting-row p{margin:12px 0 0;font-size:14px;line-height:1.3}.wpforms-admin-settings .wpforms-setting-row p:first-of-type{margin:8px 0 0}.wpforms-admin-settings .wpforms-setting-row p.desc{font-style:italic;color:#666}.wpforms-admin-settings .wpforms-setting-row p.discount-note{font-style:italic;color:#666}.wpforms-admin-settings .wpforms-setting-row p.discount-note strong{color:green}.wpforms-admin-settings .wpforms-setting-row input[type=text],.wpforms-admin-settings .wpforms-setting-row input[type=number],.wpforms-admin-settings .wpforms-setting-row input[type=password]{background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;width:400px;min-height:35px}@media (max-width: 959px){.wpforms-admin-settings .wpforms-setting-row input[type=text],.wpforms-admin-settings .wpforms-setting-row input[type=number],.wpforms-admin-settings .wpforms-setting-row input[type=password]{width:300px}}.wpforms-admin-settings .wpforms-setting-row input[type=text]:focus,.wpforms-admin-settings .wpforms-setting-row input[type=number]:focus,.wpforms-admin-settings .wpforms-setting-row input[type=password]:focus{border-color:#bbb}.wpforms-admin-settings .wpforms-setting-row input[type=number]{width:100px}.wpforms-admin-settings .wpforms-setting-row button{margin-right:10px}.wpforms-admin-settings .wpforms-setting-row .choicesjs-select-wrap{display:block;max-width:400px}@media (max-width: 959px){.wpforms-admin-settings .wpforms-setting-row .choicesjs-select-wrap{width:300px}}.wpforms-admin-settings .wpforms-setting-row .progress-bar{background:#fff;border:1px solid #e27730;height:30px;width:100%;position:relative;border-radius:3px;margin:0 0 16px 0}.wpforms-admin-settings .wpforms-setting-row .progress-bar.complete{border:1px solid #2a9b39}.wpforms-admin-settings .wpforms-setting-row .progress-bar.complete .bar{background-color:#2a9b39}.wpforms-admin-settings .wpforms-setting-row .progress-bar.complete .bar:after{content:none;display:none}.wpforms-admin-settings .wpforms-setting-row .progress-bar .bar{display:block;background:#e27730;height:100%;left:0;position:absolute;-webkit-transition:width 0.5s ease-in-out;-moz-transition:width 0.5s ease-in-out;-o-transition:width 0.5s ease-in-out;transition:width 0.5s ease-in-out}@-webkit-keyframes progress{to{background-position:60px 0}}@-moz-keyframes progress{to{background-position:60px 0}}@keyframes progress{to{background-position:60px 0}}.wpforms-admin-settings .wpforms-setting-row .progress-bar .bar:after{content:'';display:block;position:absolute;top:0;left:0;width:100%;height:100%;-webkit-animation:progress 1s linear infinite;-moz-animation:progress 1s linear infinite;animation:progress 1s linear infinite;background-repeat:repeat-x;background-size:60px 60px;background-image:-webkit-linear-gradient(-45deg, transparent 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, transparent 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.wpforms-admin-settings .wpforms-setting-label{display:block;float:left;width:200px;padding:0}@media (max-width: 781px){.wpforms-admin-settings .wpforms-setting-label{float:none;width:100%;padding-bottom:15px}}.wpforms-admin-settings .wpforms-setting-label label{display:block;font-weight:600}.wpforms-admin-settings .wpforms-setting-field{display:block;margin:0 0 0 200px;max-width:800px}@media (max-width: 781px){.wpforms-admin-settings .wpforms-setting-field{margin:0}}.wpforms-admin-settings p.submit{margin:0;padding:25px 0}.wpforms-admin-settings .info-area,.wpforms-admin-settings .pre-error{display:block;width:100%;max-width:1000px;height:450px;font-family:Menlo,Monaco,monospace;font-size:12px;background:#fff;box-shadow:none;border:1px solid #ddd;white-space:pre;overflow:auto;padding:20px}.wpforms-admin-settings .pre-error{height:auto;max-height:250px;margin-bottom:20px}.wpforms-admin-settings .checkbox-multiselect-columns{max-width:600px;position:relative}.wpforms-admin-settings .checkbox-multiselect-columns:after{content:".";display:block;height:0;line-height:0;font-size:0;clear:both;min-height:0;visibility:hidden}.wpforms-admin-settings .checkbox-multiselect-columns:before{content:"\f0ec";color:#999;font:normal normal normal 20px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:130px;left:50%;margin:0 0 0 -10px}.wpforms-admin-settings .checkbox-multiselect-columns .header{font-weight:600;font-size:13px;margin:0;padding:0 0 5px 0;text-align:center}.wpforms-admin-settings .checkbox-multiselect-columns .first-column,.wpforms-admin-settings .checkbox-multiselect-columns .second-column{width:45%;float:left}.wpforms-admin-settings .checkbox-multiselect-columns .second-column{float:right}.wpforms-admin-settings .checkbox-multiselect-columns .second-column ul li{padding:10px}.wpforms-admin-settings .checkbox-multiselect-columns ul{background-color:#fff;border:1px solid #ddd;border-radius:3px;position:relative;height:250px;padding:0;overflow-y:auto;margin:0;list-style-type:none}.wpforms-admin-settings .checkbox-multiselect-columns ul li{border-bottom:1px #eee solid;margin:0;font-size:14px}.wpforms-admin-settings .checkbox-multiselect-columns ul li label{display:block;padding:10px 10px 10px 32px;position:relative;vertical-align:baseline}.wpforms-admin-settings .checkbox-multiselect-columns ul li label:hover{background-color:#e27730;color:#fff}.wpforms-admin-settings .checkbox-multiselect-columns ul li label:before{content:"\f0c8";color:#ddd;font:normal normal normal 16px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:12px;left:10px}.wpforms-admin-settings .checkbox-multiselect-columns ul li label.checked{opacity:0.6}.wpforms-admin-settings .checkbox-multiselect-columns ul li label.checked:before{content:"\f14a";color:#2a9b39}.wpforms-admin-settings .checkbox-multiselect-columns ul li input{display:none}.wpforms-admin-settings .checkbox-multiselect-columns .all{color:#999;display:inline-block;font-size:13px;margin:10px 0 0}.wpforms-admin-settings #wpforms-importer-analyze{display:none}.wpforms-admin-settings #wpforms-importer-analyze .process-count,.wpforms-admin-settings #wpforms-importer-analyze p{font-size:14px}.wpforms-admin-settings #wpforms-importer-analyze .upgrade{display:none;font-size:14px}.wpforms-admin-settings #wpforms-importer-analyze .upgrade h5{font-size:18px;font-weight:600;padding:0;margin:30px 0 20px 0}.wpforms-admin-settings #wpforms-importer-analyze .upgrade hr{border:none;border-bottom:1px solid #e4e4e4;margin:40px 0}.wpforms-admin-settings #wpforms-importer-analyze .upgrade .wpforms-btn{margin-right:10px}.wpforms-admin-settings #wpforms-importer-analyze .upgrade ul li{list-style-type:disc;margin-left:14px}.wpforms-admin-settings #wpforms-importer-analyze .upgrade ul li.form{list-style-type:none;margin-left:0;font-weight:700}.wpforms-admin-settings #wpforms-importer-process{display:none}.wpforms-admin-settings #wpforms-importer-process .process-count,.wpforms-admin-settings #wpforms-importer-process .process-completed{font-size:14px}.wpforms-admin-settings #wpforms-importer-process .process-completed{display:none}.wpforms-admin-settings #wpforms-importer-process .status{margin:20px 0 30px;background-color:#fff;border-radius:3px;border:1px solid #ddd;max-height:800px;overflow-y:scroll;display:none}.wpforms-admin-settings #wpforms-importer-process .status .item{border-bottom:1px solid #ddd;padding:20px}.wpforms-admin-settings #wpforms-importer-process .status .item:last-of-type{border:none}.wpforms-admin-settings #wpforms-importer-process .status .item p{font-size:13px;margin:12px 0 0}.wpforms-admin-settings #wpforms-importer-process .status .item ul{font-size:13px;margin:12px 0 0 16px}.wpforms-admin-settings #wpforms-importer-process .status .item ul li{list-style:disc}.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon{display:inline-block;margin:0 10px 0 0}.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon.fa-info-circle{color:#00a0d2}.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon.fa-check{color:#46b450}.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon.fa-exclamation-triangle{color:#ffb900}.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon.fa-times,.wpforms-admin-settings #wpforms-importer-process .status .item .status-icon.fa-exclamation-circle{color:red}.wpforms-admin-settings #wpforms-importer-process .status .item .name{font-size:14px;float:left}.wpforms-admin-settings #wpforms-importer-process .status .item .actions{font-size:14px;float:right}.wpforms-admin-settings #wpforms-importer-process .status .item .actions .sep{color:#ddd}.wpforms-admin-settings .settings-lite-cta{background-color:#fff;border:1px solid #dadada;padding:25px 20px;margin:10px 0 0 0;position:relative}.wpforms-admin-settings .settings-lite-cta .dismiss{position:absolute;top:10px;right:10px;color:#666;font-size:16px}.wpforms-admin-settings .settings-lite-cta h5{margin:0 0 16px;font-size:18px;font-weight:700}.wpforms-admin-settings .settings-lite-cta h6{font-weight:700;font-size:14px;margin:0 0 16px}.wpforms-admin-settings .settings-lite-cta p{color:#555;font-size:14px;margin:0 0 16px}.wpforms-admin-settings .settings-lite-cta p:last-of-type{margin:0}.wpforms-admin-settings .settings-lite-cta p a{color:#e27730}.wpforms-admin-settings .settings-lite-cta p a:hover{color:#b85a1b}.wpforms-admin-settings .settings-lite-cta ul{margin:0;padding:0;width:50%;float:left}@media (max-width: 600px){.wpforms-admin-settings .settings-lite-cta ul{width:100%;float:none}}.wpforms-admin-settings .settings-lite-cta ul li{margin:0;padding:0 0 2px 16px;color:#555;font-size:14px;position:relative}.wpforms-admin-settings .settings-lite-cta ul li:before{content:'+';position:absolute;top:-1px;left:0}.wpforms-admin-settings .settings-lite-cta .list{margin:0 0 16px 0;overflow:auto;max-width:900px}.wpforms-admin-settings .settings-lite-cta .green{color:#218900;font-weight:700}.wpforms-admin-settings .settings-lite-cta .fa-star{color:#ff982d}#wpforms-settings-providers .wpforms-settings-provider{border-bottom:1px solid #ddd;padding:30px 0}#wpforms-settings-providers .wpforms-settings-provider.focus-out{opacity:0.4}#wpforms-settings-providers .wpforms-settings-provider-header{cursor:pointer;max-width:1000px}#wpforms-settings-providers .wpforms-settings-provider-logo{float:left;position:relative}#wpforms-settings-providers .wpforms-settings-provider-logo .fa{position:absolute;top:50%;margin:-9px 0 0 0;left:10px;color:#666;font-size:18px}#wpforms-settings-providers .wpforms-settings-provider-logo img{background:#fff;border:1px solid #ddd;max-width:90px;display:block;margin:0 0 0 40px}#wpforms-settings-providers .wpforms-settings-provider-info{margin:0 0 0 160px;position:relative;padding:20px 0 0}#wpforms-settings-providers .wpforms-settings-provider-info h3{margin:0 0 10px 0;font-size:20px;font-weight:600}#wpforms-settings-providers .wpforms-settings-provider-info p{margin:0;font-size:14px}#wpforms-settings-providers .wpforms-settings-provider-info .connected-indicator{color:#83c11f;width:135px;border:1px solid #83c11f;border-radius:4px;padding:8px 14px;font-size:16px;position:absolute;top:28px;right:0;display:none}#wpforms-settings-providers .connected .wpforms-settings-provider-info .connected-indicator{display:block}#wpforms-settings-providers .wpforms-settings-provider-accounts{margin:0 0 0 160px;display:none;max-width:840px}#wpforms-settings-providers .focus-in .wpforms-settings-provider-accounts{display:block}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul{padding:0;margin:0}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul li{border-bottom:1px solid #ddd;margin:0;padding:10px 0;font-size:14px}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul li:first-of-type{border-top:1px solid #ddd}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul li:last-of-type{margin-bottom:16px}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul span.label{float:left;width:50%}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul span.date{color:#999;float:left;width:35%}#wpforms-settings-providers .wpforms-settings-provider-accounts-list ul span.remove{float:right;width:15%;text-align:right}#wpforms-settings-providers .wpforms-settings-provider-accounts-connect{display:none;padding:20px;background-color:#ebf3fb;border:1px solid #0e6cad}#wpforms-settings-providers .wpforms-settings-provider-accounts-connect input[type=text]{background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;display:block;padding:7px 12px;margin:5px 0;width:400px;min-height:35px}#wpforms-settings-providers .wpforms-settings-provider-accounts-connect input[type=text]:focus{border-color:#bbb}#wpforms-settings-providers .focus-in .wpforms-settings-provider-accounts-connect{display:block}#wpforms-settings-providers .wpforms-settings-provider-accounts-connect .fa{display:none}#wpforms-settings-providers .wpforms-settings-provider-accounts-connect p,#wpforms-settings-providers .wpforms-settings-provider-accounts p{margin:0 0 15px 0;font-size:14px}
assets/css/wpforms-base.css CHANGED
@@ -364,6 +364,10 @@
364
  vertical-align: baseline;
365
  }
366
 
 
 
 
 
367
 
368
  /* Errors, Warnings, etc
369
  ----------------------------------------------------------------------------- */
@@ -380,8 +384,11 @@
380
  }
381
 
382
  .wpforms-container .wpforms-field input.wpforms-error,
 
383
  .wpforms-container .wpforms-field textarea.wpforms-error,
384
- .wpforms-container .wpforms-field select.wpforms-error {
 
 
385
  border: 1px solid #cc0000;
386
  }
387
 
@@ -434,6 +441,10 @@
434
  .wpforms-container button[type=submit] {
435
  }
436
 
 
 
 
 
437
 
438
  /* Date/time field
439
  ----------------------------------------------------------------------------- */
@@ -486,7 +497,7 @@
486
  }
487
 
488
  .wpforms-container .wpforms-image-choices-modern img {
489
- display: inline;
490
  margin: 0 auto;
491
  max-width: 100%;
492
  }
@@ -553,7 +564,7 @@
553
  }
554
 
555
  .wpforms-container .wpforms-image-choices-classic img {
556
- display: inline;
557
  margin: 0 auto;
558
  max-width: 100%;
559
  }
@@ -853,6 +864,15 @@ div.wpforms-container-full .wpforms-notice.wpforms-error .wpforms-notice-action:
853
  word-wrap: normal !important;
854
  }
855
 
 
 
 
 
 
 
 
 
 
856
 
857
  /* Media Queries
858
  ----------------------------------------------------------------------------- */
364
  vertical-align: baseline;
365
  }
366
 
367
+ .wpforms-container amp-img > img {
368
+ position: absolute; /* Override position:static from previous rule, to prevent breaking AMP layout. */
369
+ }
370
+
371
 
372
  /* Errors, Warnings, etc
373
  ----------------------------------------------------------------------------- */
384
  }
385
 
386
  .wpforms-container .wpforms-field input.wpforms-error,
387
+ .wpforms-container .wpforms-field input.user-invalid,
388
  .wpforms-container .wpforms-field textarea.wpforms-error,
389
+ .wpforms-container .wpforms-field textarea.user-invalid,
390
+ .wpforms-container .wpforms-field select.wpforms-error,
391
+ .wpforms-container .wpforms-field select.user-invalid {
392
  border: 1px solid #cc0000;
393
  }
394
 
441
  .wpforms-container button[type=submit] {
442
  }
443
 
444
+ .wpforms-container .wpforms-submit-spinner {
445
+ margin-left: 0.5em;
446
+ }
447
+
448
 
449
  /* Date/time field
450
  ----------------------------------------------------------------------------- */
497
  }
498
 
499
  .wpforms-container .wpforms-image-choices-modern img {
500
+ display: inline-block;
501
  margin: 0 auto;
502
  max-width: 100%;
503
  }
564
  }
565
 
566
  .wpforms-container .wpforms-image-choices-classic img {
567
+ display: inline-block;
568
  margin: 0 auto;
569
  max-width: 100%;
570
  }
864
  word-wrap: normal !important;
865
  }
866
 
867
+ /*
868
+ * Hide the form fields upon successful submission. This may not be the best approach.
869
+ * Perhaps more robust: .wpforms-form.amp-form-submit-success > *:not([submit-success]) { display:none }
870
+ */
871
+ .amp-form-submit-success .wpforms-field-container,
872
+ .amp-form-submit-success .wpforms-submit-container {
873
+ display: none;
874
+ }
875
+
876
 
877
  /* Media Queries
878
  ----------------------------------------------------------------------------- */
assets/css/wpforms-full.css CHANGED
@@ -50,6 +50,10 @@ div.wpforms-container-full .wpforms-form * {
50
  box-shadow:none;
51
  }
52
 
 
 
 
 
53
  div.wpforms-container-full .wpforms-form input,
54
  div.wpforms-container-full .wpforms-form label,
55
  div.wpforms-container-full .wpforms-form select,
@@ -496,11 +500,14 @@ div.wpforms-container-full .wpforms-form .wpforms-page-button {
496
  }
497
 
498
  div.wpforms-container-full .wpforms-form input[type=submit]:hover,
 
499
  div.wpforms-container-full .wpforms-form input[type=submit]:active,
500
  div.wpforms-container-full .wpforms-form button[type=submit]:hover,
 
501
  div.wpforms-container-full .wpforms-form button[type=submit]:active,
502
  div.wpforms-container-full .wpforms-form .wpforms-page-button:hover,
503
- div.wpforms-container-full .wpforms-form .wpforms-page-button:active {
 
504
  background-color: #ddd;
505
  border: 1px solid #ccc;
506
  cursor: pointer;
@@ -546,8 +553,11 @@ div.wpforms-container-full .wpforms-form label.wpforms-error {
546
  }
547
 
548
  div.wpforms-container-full .wpforms-form .wpforms-field input.wpforms-error,
 
549
  div.wpforms-container-full .wpforms-form .wpforms-field textarea.wpforms-error,
550
- div.wpforms-container-full .wpforms-form .wpforms-field select.wpforms-error {
 
 
551
  border: 1px solid #cc0000;
552
  }
553
 
@@ -570,18 +580,40 @@ div.wpforms-container-full .wpforms-form .wpforms-error-alert {
570
  /* Confirmation
571
  ----------------------------------------------------------------------------- */
572
 
573
- .wpforms-confirmation-container-full {
 
 
 
 
 
 
 
 
574
  color: #333;
575
  margin: 0 0 24px 0;
 
 
 
 
 
576
  background: #e0ffc7;
577
  border: 1px solid #b4d39b;
578
- padding: 15px 15px;
579
  }
580
 
581
- .wpforms-confirmation-container-full p:last-of-type {
 
582
  margin: 0;
583
  }
584
 
 
 
 
 
 
 
 
 
 
585
 
586
  /* reCAPTCHA Area
587
  ----------------------------------------------------------------------------- */
@@ -621,6 +653,13 @@ div.wpforms-container-full .wpforms-form .wpforms-submit-container {
621
  div.wpforms-container-full .wpforms-form button[type=submit] {
622
  }
623
 
 
 
 
 
 
 
 
624
  div.wpforms-container-full .wpforms-form .wpforms-pagebreak-center {
625
  text-align: center;
626
  }
@@ -789,7 +828,7 @@ div.wpforms-container-full .wpforms-form .wpforms-list-inline ul.wpforms-image-c
789
  }
790
 
791
  div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-modern img {
792
- display: inline;
793
  margin: 0 auto;
794
  max-width: 100%;
795
  }
@@ -806,7 +845,8 @@ div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-modern label {
806
  text-align: center;
807
  }
808
 
809
- div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-modern label:hover {
 
810
  border:1px solid #ddd;
811
  }
812
 
@@ -855,7 +895,7 @@ div.wpforms-container-full .wpforms-form .wpforms-list-inline ul.wpforms-image-c
855
  }
856
 
857
  div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-classic img {
858
- display: inline;
859
  margin: 0 auto;
860
  max-width: 100%;
861
  }
@@ -870,7 +910,8 @@ div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-classic label
870
  text-align: center;
871
  }
872
 
873
- div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-classic label:hover {
 
874
  border-color: #ddd;
875
  }
876
 
@@ -1162,7 +1203,6 @@ div.wpforms-container-full .wpforms-form .wpforms-screen-reader-element {
1162
  word-wrap: normal !important;
1163
  }
1164
 
1165
-
1166
  /* Media Queries
1167
  ----------------------------------------------------------------------------- */
1168
 
@@ -1280,4 +1320,4 @@ div.components-panel__body .wpforms-gutenberg-panel-notice {
1280
  border: 1px solid #bce8f1;
1281
  color: #31708f;
1282
  padding: 10px;
1283
- }
50
  box-shadow:none;
51
  }
52
 
53
+ div.wpforms-container-full .wpforms-form amp-img > img {
54
+ position: absolute; /* Override position:static from previous rule, to prevent breaking AMP layout. */
55
+ }
56
+
57
  div.wpforms-container-full .wpforms-form input,
58
  div.wpforms-container-full .wpforms-form label,
59
  div.wpforms-container-full .wpforms-form select,
500
  }
501
 
502
  div.wpforms-container-full .wpforms-form input[type=submit]:hover,
503
+ div.wpforms-container-full .wpforms-form input[type=submit]:focus,
504
  div.wpforms-container-full .wpforms-form input[type=submit]:active,
505
  div.wpforms-container-full .wpforms-form button[type=submit]:hover,
506
+ div.wpforms-container-full .wpforms-form button[type=submit]:focus,
507
  div.wpforms-container-full .wpforms-form button[type=submit]:active,
508
  div.wpforms-container-full .wpforms-form .wpforms-page-button:hover,
509
+ div.wpforms-container-full .wpforms-form .wpforms-page-button:active,
510
+ div.wpforms-container-full .wpforms-form .wpforms-page-button:focus {
511
  background-color: #ddd;
512
  border: 1px solid #ccc;
513
  cursor: pointer;
553
  }
554
 
555
  div.wpforms-container-full .wpforms-form .wpforms-field input.wpforms-error,
556
+ div.wpforms-container-full .wpforms-form .wpforms-field input.user-invalid,
557
  div.wpforms-container-full .wpforms-form .wpforms-field textarea.wpforms-error,
558
+ div.wpforms-container-full .wpforms-form .wpforms-field textarea.user-invalid,
559
+ div.wpforms-container-full .wpforms-form .wpforms-field select.wpforms-error,
560
+ div.wpforms-container-full .wpforms-form .wpforms-field select.user-invalid {
561
  border: 1px solid #cc0000;
562
  }
563
 
580
  /* Confirmation
581
  ----------------------------------------------------------------------------- */
582
 
583
+ /*
584
+ * Note: The second selector for the following two rules is needed to override the rule with
585
+ * the selector: `div.wpforms-container-full, div.wpforms-container-full .wpforms-form *`.
586
+ * The underlying cause is that the .wpforms-confirmation-container-full is not expected
587
+ * to be located inside of the .wpforms-confirmation-container-full element, since on non-AMP
588
+ * pages the confirmation message is never displayed on the same page as the form.
589
+ */
590
+ .wpforms-confirmation-container-full,
591
+ div[submit-success] > .wpforms-confirmation-container-full {
592
  color: #333;
593
  margin: 0 0 24px 0;
594
+ padding: 15px 15px;
595
+ }
596
+
597
+ .wpforms-confirmation-container-full,
598
+ div[submit-success] > .wpforms-confirmation-container-full:not(.wpforms-redirection-message) {
599
  background: #e0ffc7;
600
  border: 1px solid #b4d39b;
 
601
  }
602
 
603
+ .wpforms-confirmation-container-full p:last-of-type,
604
+ div[submit-success] > .wpforms-confirmation-container-full p:last-of-type {
605
  margin: 0;
606
  }
607
 
608
+ /*
609
+ * Hide the form fields upon successful submission. This may not be the best approach.
610
+ * Perhaps more robust: .wpforms-form.amp-form-submit-success > *:not([submit-success]) { display:none }
611
+ */
612
+ .amp-form-submit-success .wpforms-field-container,
613
+ .amp-form-submit-success .wpforms-submit-container {
614
+ display: none;
615
+ }
616
+
617
 
618
  /* reCAPTCHA Area
619
  ----------------------------------------------------------------------------- */
653
  div.wpforms-container-full .wpforms-form button[type=submit] {
654
  }
655
 
656
+ div.wpforms-container-full .wpforms-form .wpforms-submit-spinner {
657
+ margin-left: 0.5em;
658
+ display: inline-block;
659
+ vertical-align: middle;
660
+ max-width: 26px;
661
+ }
662
+
663
  div.wpforms-container-full .wpforms-form .wpforms-pagebreak-center {
664
  text-align: center;
665
  }
828
  }
829
 
830
  div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-modern img {
831
+ display: inline-block;
832
  margin: 0 auto;
833
  max-width: 100%;
834
  }
845
  text-align: center;
846
  }
847
 
848
+ div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-modern label:hover,
849
+ div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-modern label:focus {
850
  border:1px solid #ddd;
851
  }
852
 
895
  }
896
 
897
  div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-classic img {
898
+ display: inline-block;
899
  margin: 0 auto;
900
  max-width: 100%;
901
  }
910
  text-align: center;
911
  }
912
 
913
+ div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-classic label:hover,
914
+ div.wpforms-container-full .wpforms-form ul.wpforms-image-choices-classic label:focus {
915
  border-color: #ddd;
916
  }
917
 
1203
  word-wrap: normal !important;
1204
  }
1205
 
 
1206
  /* Media Queries
1207
  ----------------------------------------------------------------------------- */
1208
 
1320
  border: 1px solid #bce8f1;
1321
  color: #31708f;
1322
  padding: 10px;
1323
+ }
assets/images/addon-icon-form-pages.png ADDED
Binary file
assets/images/addon-icons-locker.png ADDED
Binary file
assets/images/submit-spin.svg ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" stroke="currentColor" width="30" height="30">
2
+ <g fill="none" fill-rule="evenodd">
3
+ <g transform="translate(1 1)" stroke-width="5">
4
+ <circle stroke-opacity=".4" cx="24" cy="24" r="22.2"/>
5
+ <path d="M46.2,24c0-12.2-9.9-22.2-22.2-22.2">
6
+ <animateTransform accumulate="none" additive="replace" attributeName="transform" calcMode="linear" dur="1s" fill="remove" from="0 24 24" repeatCount="indefinite" restart="always" to="360 24 24" type="rotate">
7
+ </animateTransform>
8
+ </path>
9
+ </g>
10
+ </g>
11
+ </svg>
assets/js/admin-builder-providers.js CHANGED
@@ -1,14 +1,14 @@
1
- /* global wpforms_builder_providers, wpforms_builder, jQuery */
2
 
3
- ;(function($) {
4
 
5
  var s;
6
 
7
  var WPFormsProviders = {
8
 
9
  settings: {
10
- form : $('#wpforms-builder-form'),
11
- spinner: '<i class="fa fa-circle-o-notch fa-spin wpforms-button-icon" />'
12
  },
13
 
14
  /**
@@ -20,7 +20,7 @@
20
  s = this.settings;
21
 
22
  // Document ready.
23
- $(document).ready(WPFormsProviders.ready);
24
 
25
  WPFormsProviders.bindUIActions();
26
  },
@@ -33,7 +33,7 @@
33
  ready: function() {
34
 
35
  // Setup/cache some vars not available before.
36
- s.formID = $('#wpforms-builder-form').data('id');
37
  },
38
 
39
  /**
@@ -44,38 +44,39 @@
44
  bindUIActions: function() {
45
 
46
  // Delete connection.
47
- $(document).on('click', '.wpforms-provider-connection-delete', function(e) {
48
- WPFormsProviders.connectionDelete(this, e);
49
- });
50
 
51
  // Add new connection.
52
- $(document).on('click', '.wpforms-provider-connections-add', function(e) {
53
- WPFormsProviders.connectionAdd(this, e);
54
- });
55
 
56
  // Add new provider account.
57
- $(document).on('click', '.wpforms-provider-account-add button', function(e) {
58
- WPFormsProviders.accountAdd(this, e);
59
- });
60
 
61
  // Select provider account.
62
- $(document).on('change', '.wpforms-provider-accounts select', function(e) {
63
- WPFormsProviders.accountSelect(this, e);
64
- });
65
 
66
  // Select account list.
67
- $(document).on('change', '.wpforms-provider-lists select', function(e) {
68
- WPFormsProviders.accountListSelect(this, e);
69
- });
70
 
71
- $(document).on('wpformsPanelSwitch', function(e, targetPanel) {
72
- WPFormsProviders.providerPanelConfirm(targetPanel);
73
- });
74
 
75
  // Alert users if they save a form and do not configure required
76
  // fields.
77
- $( document ).on( 'wpformsSaved', function(){
78
 
 
79
  var $connectionBlocks = $( '#wpforms-panel-providers' ).find( '.wpforms-connection-block' );
80
 
81
  if ( ! $connectionBlocks.length ) {
@@ -83,34 +84,40 @@
83
  }
84
 
85
  $connectionBlocks.each( function() {
86
- var requiredEmpty = false;
 
87
  $( this ).find( 'table span.required' ).each(function() {
88
  var $element = $( this ).parent().parent().find( 'select' );
89
  if ( $element.val() === '' ) {
90
  requiredEmpty = true;
91
  }
92
- });
93
  if ( requiredEmpty ) {
94
  var $titleArea = $( this ).closest( '.wpforms-panel-content-section' ).find( '.wpforms-panel-content-section-title' ).clone();
95
  $titleArea.find( 'button' ).remove();
 
96
  var msg = wpforms_builder.provider_required_flds;
97
 
98
- $.alert({
 
 
 
99
  title: wpforms_builder.heads_up,
100
- content: msg.replace( '{provider}', $titleArea.text().trim() ),
101
  icon: 'fa fa-exclamation-circle',
102
  type: 'orange',
103
  buttons: {
104
  confirm: {
105
  text: wpforms_builder.ok,
106
  btnClass: 'btn-confirm',
107
- keys: ['enter']
108
- }
109
- }
110
- });
 
111
  }
112
- });
113
- });
114
  },
115
 
116
  /**
@@ -118,11 +125,11 @@
118
  *
119
  * @since 1.0.0
120
  */
121
- connectionDelete: function(el, e) {
122
  e.preventDefault();
123
 
124
- var $this = $(el);
125
- $.confirm({
126
  title: false,
127
  content: wpforms_builder_providers.confirm_connection,
128
  backgroundDismiss: false,
@@ -133,16 +140,16 @@
133
  confirm: {
134
  text: wpforms_builder.ok,
135
  btnClass: 'btn-confirm',
136
- keys: ['enter'],
137
- action: function(){
138
- $this.closest('.wpforms-provider-connection').remove();
139
- }
140
  },
141
  cancel: {
142
- text: wpforms_builder.cancel
143
- }
144
- }
145
- });
146
  },
147
 
148
  /**
@@ -150,22 +157,22 @@
150
  *
151
  * @since 1.0.0
152
  */
153
- connectionAdd: function(el, e) {
154
  e.preventDefault();
155
 
156
- var $this = $(el),
157
  $connections = $this.parent().parent(),
158
  $container = $this.parent(),
159
- provider = $this.data('provider'),
160
- type = $this.data('type'),
161
  namePrompt = wpforms_builder_providers.prompt_connection,
162
- nameField = '<input autofocus="" type="text" id="provider-connection-name" placeholder="'+wpforms_builder_providers.prompt_placeholder+'">',
163
- nameError = '<p class="error">'+wpforms_builder_providers.error_name+'</p>',
164
- modalContent = namePrompt+nameField+nameError;
165
 
166
- modalContent = modalContent.replace(/%type%/g,type);
167
 
168
- $.confirm({
169
  title: false,
170
  content: modalContent,
171
  icon: 'fa fa-info-circle',
@@ -176,11 +183,11 @@
176
  confirm: {
177
  text: wpforms_builder.ok,
178
  btnClass: 'btn-confirm',
179
- keys: ['enter'],
180
  action: function() {
181
- var input = this.$content.find('input#provider-connection-name');
182
- var error = this.$content.find('.error');
183
- if (input.val() === '') {
184
  error.show();
185
  return false;
186
  } else {
@@ -188,38 +195,39 @@
188
  var name = input.val();
189
 
190
  // Disable button.
191
- WPFormsProviders.inputToggle($this, 'disable');
192
 
193
  // Fire AJAX.
194
  var data = {
195
- action : 'wpforms_provider_ajax_'+provider,
196
  provider: provider,
197
  task : 'new_connection',
198
  name : name,
199
- id : s.form.data('id'),
200
- nonce : wpforms_builder.nonce
201
  };
202
- WPFormsProviders.fireAJAX($this, data, function(res) {
203
- if (res.success) {
204
- $connections.find('.wpforms-provider-connections').prepend(res.data.html);
205
- // Process and load the accounts if they exist
206
- var $connection = $connections.find('.wpforms-provider-connection:first');
207
- if ($connection.find( '.wpforms-provider-accounts option:selected')) {
208
- $connection.find( '.wpforms-provider-accounts option:first').prop('selected', true);
209
- $connection.find('.wpforms-provider-accounts select').trigger('change');
 
210
  }
211
  } else {
212
- WPFormsProviders.errorDisplay(res.data.error, $container);
213
  }
214
- });
215
  }
216
- }
217
  },
218
  cancel: {
219
- text: wpforms_builder.cancel
220
- }
221
- }
222
- });
223
  },
224
 
225
  /**
@@ -227,44 +235,44 @@
227
  *
228
  * @since 1.0.0
229
  */
230
- accountAdd: function(el, e) {
231
  e.preventDefault();
232
 
233
- var $this = $(el),
234
- provider = $this.data('provider'),
235
- $connection = $this.closest('.wpforms-provider-connection'),
236
  $container = $this.parent(),
237
- $fields = $container.find(':input'),
238
- errors = WPFormsProviders.requiredCheck($fields, $container);
239
 
240
  // Disable button.
241
- WPFormsProviders.inputToggle($this, 'disable');
242
 
243
  // Bail if we have any errors.
244
- if (errors) {
245
- $this.prop('disabled', false).find('i').remove();
246
  return false;
247
  }
248
 
249
  // Fire AJAX.
250
  var data = {
251
- action : 'wpforms_provider_ajax_'+provider,
252
  provider : provider,
253
- connection_id: $connection.data('connection_id'),
254
  task : 'new_account',
255
- data : WPFormsProviders.fakeSerialize($fields)
256
  };
257
- WPFormsProviders.fireAJAX($this, data, function(res) {
258
- if (res.success) {
259
- $container.nextAll('.wpforms-connection-block').remove();
260
- $container.nextAll('.wpforms-conditional-block').remove();
261
- $container.after(res.data.html);
262
  $container.slideUp();
263
- $connection.find('.wpforms-provider-accounts select').trigger('change');
264
  } else {
265
- WPFormsProviders.errorDisplay(res.data.error, $container);
266
  }
267
- });
268
  },
269
 
270
  /**
@@ -272,50 +280,51 @@
272
  *
273
  * @since 1.0.0
274
  */
275
- accountSelect: function(el, e) {
276
  e.preventDefault();
277
 
278
- var $this = $(el),
279
- $connection = $this.closest('.wpforms-provider-connection'),
280
  $container = $this.parent(),
281
- provider = $connection.data('provider');
282
 
283
  // Disable select, show loading.
284
- WPFormsProviders.inputToggle($this, 'disable');
285
 
286
  // Remove any blocks that might exist as we prep for new account.
287
- $container.nextAll('.wpforms-connection-block').remove();
288
- $container.nextAll('.wpforms-conditional-block').remove();
289
 
290
- if (!$this.val()) {
291
 
292
  // User selected to option to add new account.
293
- $connection.find('.wpforms-provider-account-add input').val('');
294
- $connection.find('.wpforms-provider-account-add').slideDown();
295
- WPFormsProviders.inputToggle($this, 'enable');
296
 
297
  } else {
298
 
299
- $connection.find('.wpforms-provider-account-add').slideUp();
300
 
301
  // Fire AJAX.
302
  var data = {
303
- action : 'wpforms_provider_ajax_'+provider,
304
  provider : provider,
305
- connection_id: $connection.data('connection_id'),
306
  task : 'select_account',
307
- account_id : $this.find(':selected').val()
308
  };
309
- WPFormsProviders.fireAJAX($this, data, function(res) {
310
- if (res.success) {
311
- $container.after(res.data.html);
 
312
  // Process first list found.
313
- $connection.find('.wpforms-provider-lists option:first').prop('selected', true);
314
- $connection.find('.wpforms-provider-lists select').trigger('change');
315
  } else {
316
- WPFormsProviders.errorDisplay(res.data.error, $container);
317
  }
318
- });
319
  }
320
  },
321
 
@@ -324,38 +333,38 @@
324
  *
325
  * @since 1.0.0
326
  */
327
- accountListSelect: function(el, e) {
328
  e.preventDefault();
329
 
330
- var $this = $(el),
331
- $connection = $this.closest('.wpforms-provider-connection'),
332
  $container = $this.parent(),
333
- provider = $connection.data('provider');
334
 
335
  // Disable select, show loading.
336
- WPFormsProviders.inputToggle($this, 'disable');
337
 
338
  // Remove any blocks that might exist as we prep for new account.
339
- $container.nextAll('.wpforms-connection-block').remove();
340
- $container.nextAll('.wpforms-conditional-block').remove();
341
 
342
  var data = {
343
- action : 'wpforms_provider_ajax_'+provider,
344
  provider : provider,
345
- connection_id: $connection.data('connection_id'),
346
  task : 'select_list',
347
- account_id : $connection.find('.wpforms-provider-accounts option:selected').val(),
348
- list_id : $this.find(':selected').val(),
349
- form_id : s.formID
350
  };
351
 
352
- WPFormsProviders.fireAJAX($this, data, function(res) {
353
- if (res.success) {
354
- $container.after(res.data.html);
355
  } else {
356
- WPFormsProviders.errorDisplay(res.data.error, $container);
357
  }
358
- });
359
  },
360
 
361
  /**
@@ -364,13 +373,13 @@
364
  *
365
  * @since 1.0.0
366
  */
367
- providerPanelConfirm: function(targetPanel) {
368
 
369
  wpforms_panel_switch = true;
370
- if (targetPanel === 'providers') {
371
- if ( wpf.savedState != wpf.getFormState('#wpforms-builder-form') ) {
372
  wpforms_panel_switch = false;
373
- $.confirm({
374
  title: false,
375
  content: wpforms_builder_providers.confirm_save,
376
  backgroundDismiss: false,
@@ -381,19 +390,19 @@
381
  confirm: {
382
  text: wpforms_builder.ok,
383
  btnClass: 'btn-confirm',
384
- keys: ['enter'],
385
- action: function(){
386
- $('#wpforms-save').trigger('click');
387
- $(document).on('wpformsSaved', function() {
388
  window.location.href = wpforms_builder_providers.url;
389
- });
390
- }
391
  },
392
  cancel: {
393
- text: wpforms_builder.cancel
394
- }
395
- }
396
- });
397
  }
398
  }
399
  },
@@ -407,20 +416,20 @@
407
  *
408
  * @since 1.0.0
409
  */
410
- fireAJAX: function(el, d, success) {
411
- var $this = $(el);
412
  var data = {
413
- id : $('#wpforms-builder-form').data('id'),
414
- nonce : wpforms_builder.nonce
415
  };
416
 
417
- $.extend(data, d);
418
- $.post(wpforms_builder.ajax_url, data, function(res) {
419
- success(res);
420
- WPFormsProviders.inputToggle($this, 'enable');
421
- }).fail(function(xhr, textStatus, e) {
422
- console.log(xhr.responseText);
423
- });
424
  },
425
 
426
  /**
@@ -428,19 +437,19 @@
428
  *
429
  * @since 1.0.0
430
  */
431
- inputToggle: function(el, status) {
432
- var $this = $(el);
433
- if (status === 'enable') {
434
- if ($this.is('select')) {
435
- $this.prop('disabled', false).next('i').remove();
436
  } else {
437
- $this.prop('disabled', false).find('i').remove();
438
  }
439
- } else if (status === 'disable'){
440
- if ($this.is('select')) {
441
- $this.prop('disabled', true).after(s.spinner);
442
  } else {
443
- $this.prop('disabled', true).prepend(s.spinner);
444
  }
445
  }
446
  },
@@ -450,9 +459,9 @@
450
  *
451
  * @since 1.0.0
452
  */
453
- errorDisplay: function(msg, location) {
454
- location.find('.wpforms-error-msg').remove();
455
- location.prepend('<p class="wpforms-alert-danger wpforms-alert wpforms-error-msg">'+msg+'</p>');
456
  },
457
 
458
  /**
@@ -460,23 +469,23 @@
460
  *
461
  * @since 1.0.0
462
  */
463
- requiredCheck: function(fields, location) {
464
  var error = false;
465
 
466
  // Remove any previous errors.
467
- location.find('.wpforms-alert-required').remove();
468
 
469
  // Loop through input fields and check for values.
470
- fields.each(function(index, el) {
471
- if ( $(el).hasClass('wpforms-required') && $(el).val().length === 0 ) {
472
- $(el).addClass('wpforms-error');
473
  error = true;
474
  } else {
475
- $(el).removeClass('wpforms-error');
476
  }
477
- });
478
- if (error) {
479
- location.prepend('<p class="wpforms-alert-danger wpforms-alert wpforms-alert-required">'+wpforms_builder_providers.required_field+'</p>');
480
  }
481
  return error;
482
  },
@@ -486,17 +495,17 @@
486
  *
487
  * @since 1.0.0
488
  */
489
- fakeSerialize: function(els) {
490
  var fields = els.clone();
491
 
492
- fields.each(function(index, el){
493
- if ($(el).data('name')) {
494
- $(el).attr('name', $(el).data('name'));
495
  }
496
- });
497
  return fields.serialize();
498
- }
499
  };
500
 
501
  WPFormsProviders.init();
502
- })(jQuery);
1
+ /* global wpforms_builder_providers, wpforms_builder, wpf, jQuery */
2
 
3
+ ( function( $ ) {
4
 
5
  var s;
6
 
7
  var WPFormsProviders = {
8
 
9
  settings: {
10
+ form : $( '#wpforms-builder-form' ),
11
+ spinner: '<i class="fa fa-circle-o-notch fa-spin wpforms-button-icon" />',
12
  },
13
 
14
  /**
20
  s = this.settings;
21
 
22
  // Document ready.
23
+ $( document ).ready( WPFormsProviders.ready );
24
 
25
  WPFormsProviders.bindUIActions();
26
  },
33
  ready: function() {
34
 
35
  // Setup/cache some vars not available before.
36
+ s.formID = $( '#wpforms-builder-form' ).data( 'id' );
37
  },
38
 
39
  /**
44
  bindUIActions: function() {
45
 
46
  // Delete connection.
47
+ $( document ).on( 'click', '.wpforms-provider-connection-delete', function( e ) {
48
+ WPFormsProviders.connectionDelete( this, e );
49
+ } );
50
 
51
  // Add new connection.
52
+ $( document ).on( 'click', '.wpforms-provider-connections-add', function( e ) {
53
+ WPFormsProviders.connectionAdd( this, e );
54
+ } );
55
 
56
  // Add new provider account.
57
+ $( document ).on( 'click', '.wpforms-provider-account-add button', function( e ) {
58
+ WPFormsProviders.accountAdd( this, e );
59
+ } );
60
 
61
  // Select provider account.
62
+ $( document ).on( 'change', '.wpforms-provider-accounts select', function( e ) {
63
+ WPFormsProviders.accountSelect( this, e );
64
+ } );
65
 
66
  // Select account list.
67
+ $( document ).on( 'change', '.wpforms-provider-lists select', function( e ) {
68
+ WPFormsProviders.accountListSelect( this, e );
69
+ } );
70
 
71
+ $( document ).on( 'wpformsPanelSwitch', function( e, targetPanel ) {
72
+ WPFormsProviders.providerPanelConfirm( targetPanel );
73
+ } );
74
 
75
  // Alert users if they save a form and do not configure required
76
  // fields.
77
+ $( document ).on( 'wpformsSaved', function() {
78
 
79
+ var providerAlerts = [];
80
  var $connectionBlocks = $( '#wpforms-panel-providers' ).find( '.wpforms-connection-block' );
81
 
82
  if ( ! $connectionBlocks.length ) {
84
  }
85
 
86
  $connectionBlocks.each( function() {
87
+ var requiredEmpty = false,
88
+ providerName;
89
  $( this ).find( 'table span.required' ).each(function() {
90
  var $element = $( this ).parent().parent().find( 'select' );
91
  if ( $element.val() === '' ) {
92
  requiredEmpty = true;
93
  }
94
+ } );
95
  if ( requiredEmpty ) {
96
  var $titleArea = $( this ).closest( '.wpforms-panel-content-section' ).find( '.wpforms-panel-content-section-title' ).clone();
97
  $titleArea.find( 'button' ).remove();
98
+ providerName = $titleArea.text().trim();
99
  var msg = wpforms_builder.provider_required_flds;
100
 
101
+ if ( -1 < providerAlerts.indexOf( providerName ) ) {
102
+ return;
103
+ }
104
+ $.alert( {
105
  title: wpforms_builder.heads_up,
106
+ content: msg.replace( '{provider}', providerName ),
107
  icon: 'fa fa-exclamation-circle',
108
  type: 'orange',
109
  buttons: {
110
  confirm: {
111
  text: wpforms_builder.ok,
112
  btnClass: 'btn-confirm',
113
+ keys: [ 'enter' ],
114
+ },
115
+ },
116
+ } );
117
+ providerAlerts.push( providerName );
118
  }
119
+ } );
120
+ } );
121
  },
122
 
123
  /**
125
  *
126
  * @since 1.0.0
127
  */
128
+ connectionDelete: function( el, e ) {
129
  e.preventDefault();
130
 
131
+ var $this = $( el );
132
+ $.confirm( {
133
  title: false,
134
  content: wpforms_builder_providers.confirm_connection,
135
  backgroundDismiss: false,
140
  confirm: {
141
  text: wpforms_builder.ok,
142
  btnClass: 'btn-confirm',
143
+ keys: [ 'enter' ],
144
+ action: function() {
145
+ $this.closest( '.wpforms-provider-connection' ).remove();
146
+ },
147
  },
148
  cancel: {
149
+ text: wpforms_builder.cancel,
150
+ },
151
+ },
152
+ } );
153
  },
154
 
155
  /**
157
  *
158
  * @since 1.0.0
159
  */
160
+ connectionAdd: function( el, e ) {
161
  e.preventDefault();
162
 
163
+ var $this = $( el ),
164
  $connections = $this.parent().parent(),
165
  $container = $this.parent(),
166
+ provider = $this.data( 'provider' ),
167
+ type = $this.data( 'type' ),
168
  namePrompt = wpforms_builder_providers.prompt_connection,
169
+ nameField = '<input autofocus="" type="text" id="provider-connection-name" placeholder="' + wpforms_builder_providers.prompt_placeholder + '">',
170
+ nameError = '<p class="error">' + wpforms_builder_providers.error_name + '</p>',
171
+ modalContent = namePrompt + nameField + nameError;
172
 
173
+ modalContent = modalContent.replace( /%type%/g, type );
174
 
175
+ $.confirm( {
176
  title: false,
177
  content: modalContent,
178
  icon: 'fa fa-info-circle',
183
  confirm: {
184
  text: wpforms_builder.ok,
185
  btnClass: 'btn-confirm',
186
+ keys: [ 'enter' ],
187
  action: function() {
188
+ var input = this.$content.find( 'input#provider-connection-name' );
189
+ var error = this.$content.find( '.error' );
190
+ if ( input.val() === '' ) {
191
  error.show();
192
  return false;
193
  } else {
195
  var name = input.val();
196
 
197
  // Disable button.
198
+ WPFormsProviders.inputToggle( $this, 'disable' );
199
 
200
  // Fire AJAX.
201
  var data = {
202
+ action : 'wpforms_provider_ajax_' + provider,
203
  provider: provider,
204
  task : 'new_connection',
205
  name : name,
206
+ id : s.form.data( 'id' ),
207
+ nonce : wpforms_builder.nonce,
208
  };
209
+ WPFormsProviders.fireAJAX( $this, data, function( res ) {
210
+ if ( res.success ) {
211
+ $connections.find( '.wpforms-provider-connections' ).prepend( res.data.html );
212
+
213
+ // Process and load the accounts if they exist.
214
+ var $connection = $connections.find( '.wpforms-provider-connection:first' );
215
+ if ( $connection.find( '.wpforms-provider-accounts option:selected' ) ) {
216
+ $connection.find( '.wpforms-provider-accounts option:first' ).prop( 'selected', true );
217
+ $connection.find( '.wpforms-provider-accounts select' ).trigger( 'change' );
218
  }
219
  } else {
220
+ WPFormsProviders.errorDisplay( res.data.error, $container );
221
  }
222
+ } );
223
  }
224
+ },
225
  },
226
  cancel: {
227
+ text: wpforms_builder.cancel,
228
+ },
229
+ },
230
+ } );
231
  },
232
 
233
  /**
235
  *
236
  * @since 1.0.0
237
  */
238
+ accountAdd: function( el, e ) {
239
  e.preventDefault();
240
 
241
+ var $this = $( el ),
242
+ provider = $this.data( 'provider' ),
243
+ $connection = $this.closest( '.wpforms-provider-connection' ),
244
  $container = $this.parent(),
245
+ $fields = $container.find( ':input' ),
246
+ errors = WPFormsProviders.requiredCheck( $fields, $container );
247
 
248
  // Disable button.
249
+ WPFormsProviders.inputToggle( $this, 'disable' );
250
 
251
  // Bail if we have any errors.
252
+ if ( errors ) {
253
+ $this.prop( 'disabled', false ).find( 'i' ).remove();
254
  return false;
255
  }
256
 
257
  // Fire AJAX.
258
  var data = {
259
+ action : 'wpforms_provider_ajax_' + provider,
260
  provider : provider,
261
+ connection_id: $connection.data( 'connection_id' ),
262
  task : 'new_account',
263
+ data : WPFormsProviders.fakeSerialize( $fields ),
264
  };
265
+ WPFormsProviders.fireAJAX( $this, data, function( res ) {
266
+ if ( res.success ) {
267
+ $container.nextAll( '.wpforms-connection-block' ).remove();
268
+ $container.nextAll( '.wpforms-conditional-block' ).remove();
269
+ $container.after( res.data.html );
270
  $container.slideUp();
271
+ $connection.find( '.wpforms-provider-accounts select' ).trigger( 'change' );
272
  } else {
273
+ WPFormsProviders.errorDisplay( res.data.error, $container );
274
  }
275
+ } );
276
  },
277
 
278
  /**
280
  *
281
  * @since 1.0.0
282
  */
283
+ accountSelect: function( el, e ) {
284
  e.preventDefault();
285
 
286
+ var $this = $( el ),
287
+ $connection = $this.closest( '.wpforms-provider-connection' ),
288
  $container = $this.parent(),
289
+ provider = $connection.data( 'provider' );
290
 
291
  // Disable select, show loading.
292
+ WPFormsProviders.inputToggle( $this, 'disable' );
293
 
294
  // Remove any blocks that might exist as we prep for new account.
295
+ $container.nextAll( '.wpforms-connection-block' ).remove();
296
+ $container.nextAll( '.wpforms-conditional-block' ).remove();
297
 
298
+ if ( ! $this.val() ) {
299
 
300
  // User selected to option to add new account.
301
+ $connection.find( '.wpforms-provider-account-add input' ).val( '' );
302
+ $connection.find( '.wpforms-provider-account-add' ).slideDown();
303
+ WPFormsProviders.inputToggle( $this, 'enable' );
304
 
305
  } else {
306
 
307
+ $connection.find( '.wpforms-provider-account-add' ).slideUp();
308
 
309
  // Fire AJAX.
310
  var data = {
311
+ action : 'wpforms_provider_ajax_' + provider,
312
  provider : provider,
313
+ connection_id: $connection.data( 'connection_id' ),
314
  task : 'select_account',
315
+ account_id : $this.find( ':selected' ).val(),
316
  };
317
+ WPFormsProviders.fireAJAX( $this, data, function( res ) {
318
+ if ( res.success ) {
319
+ $container.after( res.data.html );
320
+
321
  // Process first list found.
322
+ $connection.find( '.wpforms-provider-lists option:first' ).prop( 'selected', true );
323
+ $connection.find( '.wpforms-provider-lists select' ).trigger( 'change' );
324
  } else {
325
+ WPFormsProviders.errorDisplay( res.data.error, $container );
326
  }
327
+ } );
328
  }
329
  },
330
 
333
  *
334
  * @since 1.0.0
335
  */
336
+ accountListSelect: function( el, e ) {
337
  e.preventDefault();
338
 
339
+ var $this = $( el ),
340
+ $connection = $this.closest( '.wpforms-provider-connection' ),
341
  $container = $this.parent(),
342
+ provider = $connection.data( 'provider' );
343
 
344
  // Disable select, show loading.
345
+ WPFormsProviders.inputToggle( $this, 'disable' );
346
 
347
  // Remove any blocks that might exist as we prep for new account.
348
+ $container.nextAll( '.wpforms-connection-block' ).remove();
349
+ $container.nextAll( '.wpforms-conditional-block' ).remove();
350
 
351
  var data = {
352
+ action : 'wpforms_provider_ajax_' + provider,
353
  provider : provider,
354
+ connection_id: $connection.data( 'connection_id' ),
355
  task : 'select_list',
356
+ account_id : $connection.find( '.wpforms-provider-accounts option:selected' ).val(),
357
+ list_id : $this.find( ':selected' ).val(),
358
+ form_id : s.formID,
359
  };
360
 
361
+ WPFormsProviders.fireAJAX( $this, data, function( res ) {
362
+ if ( res.success ) {
363
+ $container.after( res.data.html );
364
  } else {
365
+ WPFormsProviders.errorDisplay( res.data.error, $container );
366
  }
367
+ } );
368
  },
369
 
370
  /**
373
  *
374
  * @since 1.0.0
375
  */
376
+ providerPanelConfirm: function( targetPanel ) {
377
 
378
  wpforms_panel_switch = true;
379
+ if ( targetPanel === 'providers' ) {
380
+ if ( wpf.savedState != wpf.getFormState( '#wpforms-builder-form' ) ) {
381
  wpforms_panel_switch = false;
382
+ $.confirm( {
383
  title: false,
384
  content: wpforms_builder_providers.confirm_save,
385
  backgroundDismiss: false,
390
  confirm: {
391
  text: wpforms_builder.ok,
392
  btnClass: 'btn-confirm',
393
+ keys: [ 'enter' ],
394
+ action: function() {
395
+ $( '#wpforms-save' ).trigger( 'click' );
396
+ $( document ).on( 'wpformsSaved', function() {
397
  window.location.href = wpforms_builder_providers.url;
398
+ } );
399
+ },
400
  },
401
  cancel: {
402
+ text: wpforms_builder.cancel,
403
+ },
404
+ },
405
+ } );
406
  }
407
  }
408
  },
416
  *
417
  * @since 1.0.0
418
  */
419
+ fireAJAX: function( el, d, success ) {
420
+ var $this = $( el );
421
  var data = {
422
+ id : $( '#wpforms-builder-form' ).data( 'id' ),
423
+ nonce : wpforms_builder.nonce,
424
  };
425
 
426
+ $.extend( data, d );
427
+ $.post( wpforms_builder.ajax_url, data, function( res ) {
428
+ success( res );
429
+ WPFormsProviders.inputToggle( $this, 'enable' );
430
+ } ).fail( function( xhr, textStatus, e ) {
431
+ console.log( xhr.responseText );
432
+ } );
433
  },
434
 
435
  /**
437
  *
438
  * @since 1.0.0
439
  */
440
+ inputToggle: function( el, status ) {
441
+ var $this = $( el );
442
+ if ( status === 'enable' ) {
443
+ if ( $this.is( 'select' ) ) {
444
+ $this.prop( 'disabled', false ).next( 'i' ).remove();
445
  } else {
446
+ $this.prop( 'disabled', false ).find( 'i' ).remove();
447
  }
448
+ } else if ( status === 'disable' ) {
449
+ if ( $this.is( 'select' ) ) {
450
+ $this.prop( 'disabled', true ).after( s.spinner );
451
  } else {
452
+ $this.prop( 'disabled', true ).prepend( s.spinner );
453
  }
454
  }
455
  },
459
  *
460
  * @since 1.0.0
461
  */
462
+ errorDisplay: function( msg, location ) {
463
+ location.find( '.wpforms-error-msg' ).remove();
464
+ location.prepend( '<p class="wpforms-alert-danger wpforms-alert wpforms-error-msg">' + msg + '</p>' );
465
  },
466
 
467
  /**
469
  *
470
  * @since 1.0.0
471
  */
472
+ requiredCheck: function( fields, location ) {
473
  var error = false;
474
 
475
  // Remove any previous errors.
476
+ location.find( '.wpforms-alert-required' ).remove();
477
 
478
  // Loop through input fields and check for values.
479
+ fields.each( function( index, el ) {
480
+ if ( $( el ).hasClass( 'wpforms-required' ) && $( el ).val().length === 0 ) {
481
+ $( el ).addClass( 'wpforms-error' );
482
  error = true;
483
  } else {
484
+ $( el ).removeClass( 'wpforms-error' );
485
  }
486
+ } );
487
+ if ( error ) {
488
+ location.prepend( '<p class="wpforms-alert-danger wpforms-alert wpforms-alert-required">' + wpforms_builder_providers.required_field + '</p>' );
489
  }
490
  return error;
491
  },
495
  *
496
  * @since 1.0.0
497
  */
498
+ fakeSerialize: function( els ) {
499
  var fields = els.clone();
500
 
501
+ fields.each( function( index, el ) {
502
+ if ( $( el ).data( 'name' ) ) {
503
+ $( el ).attr( 'name', $( el ).data( 'name' ) );
504
  }
505
+ } );
506
  return fields.serialize();
507
+ },
508
  };
509
 
510
  WPFormsProviders.init();
511
+ } )( jQuery );
assets/js/admin.js CHANGED
@@ -941,6 +941,26 @@
941
  }
942
  },
943
  effect: 'appear'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
944
  }
945
  ] );
946
  });
941
  }
942
  },
943
  effect: 'appear'
944
+ },
945
+ // reCAPTCHA > Score Threshold.
946
+ {
947
+ conditions: {
948
+ element: 'input[name=recaptcha-type]:checked',
949
+ type: 'value',
950
+ operator: '=',
951
+ condition: 'v3'
952
+ },
953
+ actions: {
954
+ if: {
955
+ element: '#wpforms-setting-row-recaptcha-v3-threshold',
956
+ action: 'show'
957
+ },
958
+ else : {
959
+ element: '#wpforms-setting-row-recaptcha-v3-threshold',
960
+ action: 'hide'
961
+ }
962
+ },
963
+ effect: 'appear'
964
  }
965
  ] );
966
  });
assets/js/admin.min.js CHANGED
@@ -1 +1 @@
1
- !function(l){"use strict";var f,s={settings:{iconActivate:'<i class="fa fa-toggle-on fa-flip-horizontal" aria-hidden="true"></i>',iconDeactivate:'<i class="fa fa-toggle-on" aria-hidden="true"></i>',iconInstall:'<i class="fa fa-cloud-download" aria-hidden="true"></i>',iconSpinner:'<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>',mediaFrame:!1},init:function(){f=this.settings,l(document).ready(s.ready),s.initFormOverview(),s.initEntriesSingle(),s.initEntriesList(),s.initWelcome(),s.initAddons(),s.initSettings(),s.initTools(),s.initUpgrades()},ready:function(){l(".notice").show(),l("#screen-meta-links, #screen-meta").prependTo("#wpforms-header-temp").show(),s.initChoicesJS(),s.initCheckboxMultiselectColumns(),l(".wpforms-color-picker").minicolors(),l(".wpforms-file-upload").each(function(){var e=l(this).find("input[type=file]"),n=l(this).find("label"),o=n.html();e.on("change",function(e){var t="";this.files&&1<this.files.length?t=(this.getAttribute("data-multiple-caption")||"").replace("{count}",this.files.length):e.target.value&&(t=e.target.value.split("\\").pop()),t?n.find(".fld").html(t):n.html(o)}),e.on("focus",function(){e.addClass("has-focus")}).on("blur",function(){e.removeClass("has-focus")})}),jconfirm.defaults={closeIcon:!0,backgroundDismiss:!0,escapeKey:!0,animationBounce:1,useBootstrap:!1,theme:"modern",boxWidth:"400px",animateFromElement:!1},l(document).on("click",".wpforms-upgrade-modal",function(){l.alert({title:!1,content:wpforms_admin.upgrade_modal,icon:"fa fa-info-circle",type:"blue",boxWidth:"565px",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})}),l(document).trigger("wpformsReady")},initChoicesJS:function(){l(".choicesjs-select").each(function(){var e=l(this),t={searchEnabled:!1};e.attr("multiple")&&(t.searchEnabled=!0,t.removeItemButton=!0),e.data("placeholder")&&(t.placeholderValue=e.data("placeholder")),"off"===e.data("sorting")&&(t.shouldSort=!1),e.data("search")&&(t.searchEnabled=!0),t.loadingText=wpforms_admin.choicesjs_loading,t.noResultsText=wpforms_admin.choicesjs_no_results,t.noChoicesText=wpforms_admin.choicesjs_no_choices,t.itemSelectText=wpforms_admin.choicesjs_item_select,new Choices(e[0],t)})},initCheckboxMultiselectColumns:function(){l(document).on("change",".checkbox-multiselect-columns input",function(){var e=l(this),t=e.parent(),n=e.closest(".checkbox-multiselect-columns"),o=t.text(),i="check-item-"+e.val(),s=n.find("#"+i);e.prop("checked")?(e.parent().addClass("checked"),s.length||n.find(".second-column ul").append('<li id="'+i+'">'+o+"</li>")):(e.parent().removeClass("checked"),n.find("#"+i).remove())}),l(document).on("click",".checkbox-multiselect-columns .all",function(e){e.preventDefault(),l(this).closest(".checkbox-multiselect-columns").find("input[type=checkbox]").prop("checked",!0).trigger("change"),l(this).remove()})},initFormOverview:function(){l(document).on("click","#wpforms-overview .wp-list-table .delete a, #wpforms-overview .wp-list-table .duplicate a",function(e){e.preventDefault();var t=l(this).attr("href"),n=l(this).parent().hasClass("delete")?wpforms_admin.form_delete_confirm:wpforms_admin.form_duplicate_confirm;l.confirm({title:!1,content:n,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=t}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})})},initEntriesSingle:function(){"wpforms-entries"===s.getQueryString("page")&&"details"===s.getQueryString("view")&&s.entryHotkeys(),l(document).on("click","#wpforms-entries-single .submitdelete",function(e){e.preventDefault();var t=l(this).attr("href");l.confirm({title:!1,content:wpforms_admin.entry_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=t}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})}),l(document).on("click","#wpforms-entries-single .wpforms-entry-print a",function(e){e.preventDefault(),window.open(l(this).attr("href"))}),l(document).on("click","#wpforms-entries-single .wpforms-empty-field-toggle",function(e){e.preventDefault(),"true"===wpCookies.get("wpforms_entry_hide_empty")?(wpCookies.remove("wpforms_entry_hide_empty"),l(this).text(wpforms_admin.entry_empty_fields_hide)):(wpCookies.set("wpforms_entry_hide_empty","true",2592e3),l(this).text(wpforms_admin.entry_empty_fields_show)),l(".wpforms-entry-field.empty").toggle()}),l(document).on("click","#wpforms-entries-single .wpforms-entry-notes-new .add",function(e){e.preventDefault(),l(this).hide().next("form").slideToggle()}),l(document).on("click","#wpforms-entries-single .wpforms-entry-notes-new .cancel",function(e){e.preventDefault(),l(this).closest("form").slideToggle(),l(".wpforms-entry-notes-new .add").show()}),l(document).on("click","#wpforms-entries-single .wpforms-entry-notes-byline .note-delete",function(e){e.preventDefault();var t=l(this).attr("href");l.confirm({title:!1,content:wpforms_admin.entry_note_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=t}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})})},entryHotkeys:function(){l(document).keydown(function(e){if(74!==e.keyCode||s.isFormTypeNode(e.target.nodeName)){if(75===e.keyCode&&!s.isFormTypeNode(e.target.nodeName)){var t=l("#wpforms-entry-next-link").attr("href");"#"!==t&&(window.location.href=t)}}else{var n=l("#wpforms-entry-prev-link").attr("href");"#"!==n&&(window.location.href=n)}})},initEntriesList:function(){l(document).on("click","#wpforms-entries-table-edit-columns",function(e){e.preventDefault(),s.entriesListFieldColumn()}),l(document).on("click","#wpforms-entries-list .form-selector .toggle",function(e){e.preventDefault(),l(this).toggleClass("active").next(".form-list").toggle()}),l(document).on("click","#wpforms-entries-list .wp-list-table .delete",function(e){e.preventDefault();var t=l(this).attr("href");l.confirm({title:!1,content:wpforms_admin.entry_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=t}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})}),l(document).on("click","#wpforms-entries-list .wp-list-table .indicator-star",function(e){e.preventDefault();var t=l(this),n="",o=Number(l("#wpforms-entries-list .starred-num").text()),i=t.data("id");t.hasClass("star")?(n="star",o++,t.attr("title",wpforms_admin.entry_unstar)):(n="unstar",o--,t.attr("title",wpforms_admin.entry_star)),t.toggleClass("star unstar"),l("#wpforms-entries-list .starred-num").text(o);var s={task:n,action:"wpforms_entry_list_star",nonce:wpforms_admin.nonce,entry_id:i};l.post(wpforms_admin.ajax_url,s)}),l(document).on("click","#wpforms-entries-list .wp-list-table .indicator-read",function(e){e.preventDefault();var t=l(this),n="",o=Number(l("#wpforms-entries-list .unread-num").text()),i=t.data("id");t.hasClass("read")?(n="read",o--,t.attr("title",wpforms_admin.entry_unread)):(n="unread",o++,t.attr("title",wpforms_admin.entry_read)),t.toggleClass("read unread"),l("#wpforms-entries-list .unread-num").text(o);var s={task:n,action:"wpforms_entry_list_read",nonce:wpforms_admin.nonce,entry_id:i};l.post(wpforms_admin.ajax_url,s)}),l(document).on("click","#wpforms-entries-list .form-details-actions-deleteall",function(e){e.preventDefault();var t=l(this).attr("href");l.confirm({title:wpforms_admin.heads_up,content:wpforms_admin.entry_delete_all_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=t}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})}),l(document).on("heartbeat-send",function(e,t){var n=l("#wpforms-entries-list");if(n.length){var o=n.find("#wpforms-entries-table").data("last-entry-id");void 0!==o&&(t.wpforms_new_entries_entry_id=o,t.wpforms_new_entries_form_id=n.find("input[name=form_id]").val())}}),l(document).on("heartbeat-tick",function(e,t){var n,o=l("#wpforms-entries-list");o.length&&t.wpforms_new_entries_notification&&(n=o.find(".wp-list-table thead tr").first().children().length,o.find(".new-entries-notification").length||o.find(".wp-list-table thead").append('<tr class="new-entries-notification"><td colspan="'+n+'"><a href=""></a></td></tr>'),o.find(".new-entries-notification a").text(t.wpforms_new_entries_notification).slideDown({duration:500,start:function(){l(this).css({display:"block"})}}))})},entriesListFieldColumn:function(){l.alert({title:wpforms_admin.entry_field_columns,boxWidth:"500px",content:f.iconSpinner+l("#wpforms-field-column-select").html(),onContentReady:function(){var e=this.$content,t=e.find("select"),n=new Choices(t[0],{shouldSort:!1,removeItemButton:!0,placeholderValue:wpforms_admin.choicesjs_fields_select+"...",loadingText:wpforms_admin.choicesjs_loading,noResultsText:wpforms_admin.choicesjs_no_results,noChoicesText:wpforms_admin.choicesjs_no_choices,itemSelectText:wpforms_admin.choicesjs_item_select,callbackOnInit:function(){e.find(".fa").remove(),e.find("form").show()}});l(".jconfirm-content-pane, .jconfirm-box").css("overflow","visible"),n.passedElement.addEventListener("change",function(){n.hideDropdown()},!1)},buttons:{confirm:{text:wpforms_admin.save_refresh,btnClass:"btn-confirm",keys:["enter"],action:function(){this.$content.find("form").submit()}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})},initWelcome:function(){l(document).on("click","#wpforms-welcome .play-video",function(e){e.preventDefault();l.dialog({title:!1,content:'<div class="video-container"><iframe width="1280" height="720" src="https://www.youtube-nocookie.com/embed/yDyvSGV7tP4?rel=0&amp;showinfo=0&amp;autoplay=1" frameborder="0" allowfullscreen></iframe></div>',closeIcon:!0,boxWidth:"70%"})})},initAddons:function(){l(document).on("wpformsReady",function(){if(l("#wpforms-admin-addons").length&&(l(".addon-item .details").matchHeight({byrow:!1,property:"height"}),l("#wpforms-admin-addons-list").length)){var n=new List("wpforms-admin-addons-list",{valueNames:["addon-name"]});l("#wpforms-admin-addons-search").on("keyup",function(){var e=l(this).val(),t=l("#addons-heading");e?t.text(wpforms_admin.addon_search):t.text(t.data("text")),n.search(e)})}}),l(document).on("click","#wpforms-admin-addons .addon-item button",function(e){if(e.preventDefault(),l(this).hasClass("disabled"))return!1;s.addonToggle(l(this))})},addonToggle:function(t){var n,o,i,s,a,r,c=t.closest(".addon-item"),e=t.attr("data-plugin"),d=t.attr("data-type");if(t.hasClass("status-go-to-url"))window.open(t.attr("data-plugin"),"_blank");else{if(t.prop("disabled",!0).addClass("loading"),t.html(f.iconSpinner),t.hasClass("status-active"))n="wpforms_deactivate_addon",o="status-inactive","plugin"===d&&(o+=" button button-secondary"),i=wpforms_admin.addon_inactive,s=wpforms_admin.addon_activate,"addon"===d&&(s=f.iconActivate+s),a=f.iconDeactivate+wpforms_admin.addon_deactivate;else if(t.hasClass("status-inactive"))n="wpforms_activate_addon",o="status-active","plugin"===d&&(o+=" button button-secondary disabled"),i=wpforms_admin.addon_active,s=wpforms_admin.addon_deactivate,"addon"===d?s=f.iconDeactivate+s:"plugin"===d&&(s=wpforms_admin.addon_activated),a=f.iconActivate+wpforms_admin.addon_activate;else{if(!t.hasClass("status-download"))return;n="wpforms_install_addon",o="status-active","plugin"===d&&(o+=" button disabled"),i=wpforms_admin.addon_active,s=wpforms_admin.addon_activated,"addon"===d&&(s=f.iconActivate+wpforms_admin.addon_deactivate),a=f.iconInstall+wpforms_admin.addon_activate}var m={action:n,nonce:wpforms_admin.nonce,plugin:e,type:d};l.post(wpforms_admin.ajax_url,m,function(e){e.success?("wpforms_install_addon"===n?(t.attr("data-plugin",e.data.basename),r=e.data.msg,e.data.is_activated||(o="status-inactive","plugin"===d&&(o="button"),i=wpforms_admin.addon_inactive,s=f.iconActivate+wpforms_admin.addon_activate)):r=e.data,c.find(".actions").append('<div class="msg success">'+r+"</div>"),c.find("span.status-label").removeClass("status-active status-inactive status-download").addClass(o).removeClass("button button-primary button-secondary disabled").text(i),t.removeClass("status-active status-inactive status-download").removeClass("button button-primary button-secondary disabled").addClass(o).html(s)):("download_failed"===e.data[0].code?"addon"===d?c.find(".actions").append('<div class="msg error">'+wpforms_admin.addon_error+"</div>"):c.find(".actions").append('<div class="msg error">'+wpforms_admin.plugin_error+"</div>"):c.find(".actions").append('<div class="msg error">'+e.data+"</div>"),t.html(a)),t.prop("disabled",!1).removeClass("loading"),setTimeout(function(){l(".addon-item .msg").remove()},3e3)}).fail(function(e){console.log(e.responseText)})}},initSettings:function(){l(document).on("wpformsReady",function(){if(l("#wpforms-settings").length){var e=s.getQueryString("wpforms-integration"),t=s.getQueryString("jump");e?l("body").animate({scrollTop:l("#wpforms-integration-"+e).offset().top},1e3):t&&l("body").animate({scrollTop:l("#"+t).offset().top},1e3),l(".wpforms-admin-settings-form").conditions([{conditions:{element:"#wpforms-setting-gdpr",type:"checked",operator:"is"},actions:{if:{element:"#wpforms-setting-row-gdpr-disable-uuid,#wpforms-setting-row-gdpr-disable-details",action:"show"},else:{element:"#wpforms-setting-row-gdpr-disable-uuid,#wpforms-setting-row-gdpr-disable-details",action:"hide"}},effect:"appear"}])}}),l(document).on("change","#wpforms-setting-disable-css",function(){s.settingsFormStylesAlert(l(this).val())}),l(document).on("click",".wpforms-setting-row-image button",function(e){e.preventDefault(),s.imageUploadModal(l(this))}),l(document).on("click","#wpforms-setting-license-key-verify",function(e){e.preventDefault(),s.licenseVerify(l(this))}),l(document).on("click","#wpforms-setting-license-key-deactivate",function(e){e.preventDefault(),s.licenseDeactivate(l(this))}),l(document).on("click","#wpforms-setting-license-key-refresh",function(e){e.preventDefault(),s.licenseRefresh(l(this))}),l(document).on("click",".wpforms-settings-provider-connect",function(e){e.preventDefault();var t=l(this);s.integrationConnect(t)}),l(document).on("click",".wpforms-settings-provider-accounts-list a",function(e){e.preventDefault(),s.integrationDisconnect(l(this))}),l(document).on("click",".wpforms-settings-provider-header",function(e){e.preventDefault(),l(this).parent().find(".wpforms-settings-provider-accounts").slideToggle(),l(this).parent().find(".wpforms-settings-provider-logo i").toggleClass("fa-chevron-right fa-chevron-down")}),l(document).on("click",".wpforms-settings-provider-accounts-toggle a",function(e){e.preventDefault();var t=l(this).parent().next(".wpforms-settings-provider-accounts-connect");t.find("input[type=text], input[type=password]").val(""),t.slideToggle()})},settingsFormStylesAlert:function(e){if("2"===e)var t=wpforms_admin.settings_form_style_base;else{if("3"!==e)return;t=wpforms_admin.settings_form_style_none}l.alert({title:wpforms_admin.heads_up,content:t,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})},imageUploadModal:function(e){if(f.media_frame)f.media_frame.open();else{var t=l(e).closest(".wpforms-setting-field");f.media_frame=wp.media.frames.wpforms_media_frame=wp.media({className:"media-frame wpforms-media-frame",frame:"select",multiple:!1,title:wpforms_admin.upload_image_title,library:{type:"image"},button:{text:wpforms_admin.upload_image_button}}),f.media_frame.on("select",function(){var e=f.media_frame.state().get("selection").first().toJSON();t.find("input[type=text]").val(e.url),t.find("img").remove(),t.prepend('<img src="'+e.url+'">')}),f.media_frame.open()}},licenseVerify:function(e){var i=l(e),s=i.closest(".wpforms-setting-row"),t=i.outerWidth(),a=i.text(),n={action:"wpforms_verify_license",nonce:wpforms_admin.nonce,license:l("#wpforms-setting-license-key").val()};i.html(f.iconSpinner).css("width",t).prop("disabled",!0),l.post(wpforms_admin.ajax_url,n,function(e){var t,n="fa fa-check-circle",o="green";e.success?(t=e.data.msg,s.find(".type, .desc, #wpforms-setting-license-key-deactivate").show(),s.find(".type strong").text(e.data.type),l(".wpforms-license-notice").remove()):(n="fa fa-exclamation-circle",o="orange",t=e.data,s.find(".type, .desc, #wpforms-setting-license-key-deactivate").hide()),l.alert({title:!1,content:t,icon:n,type:o,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}}),i.html(a).css("width","auto").prop("disabled",!1)}).fail(function(e){console.log(e.responseText)})},licenseDeactivate:function(e){var i=l(e),s=i.closest(".wpforms-setting-row"),t=i.outerWidth(),a=i.text(),n={action:"wpforms_deactivate_license",nonce:wpforms_admin.nonce};i.html(f.iconSpinner).css("width",t).prop("disabled",!0),l.post(wpforms_admin.ajax_url,n,function(e){var t="fa fa-info-circle",n="blue",o=e.data;e.success?(s.find("#wpforms-setting-license-key").val(""),s.find(".type, .desc, #wpforms-setting-license-key-deactivate").hide()):(t="fa fa-exclamation-circle",n="orange"),l.alert({title:!1,content:o,icon:t,type:n,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}}),i.html(a).css("width","auto").prop("disabled",!1)}).fail(function(e){console.log(e.responseText)})},licenseRefresh:function(e){var i=l(e).closest(".wpforms-setting-row"),t={action:"wpforms_refresh_license",nonce:wpforms_admin.nonce,license:l("#wpforms-setting-license-key").val()};l.post(wpforms_admin.ajax_url,t,function(e){var t,n="fa fa-check-circle",o="green";e.success?(t=e.data.msg,i.find(".type strong").text(e.data.type)):(n="fa fa-exclamation-circle",o="orange",t=e.data,i.find(".type, .desc, #wpforms-setting-license-key-deactivate").hide()),l.alert({title:!1,content:t,icon:n,type:o,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})}).fail(function(e){console.log(e.responseText)})},integrationConnect:function(n){var e=n.outerWidth(),o=n.text(),i=n.closest(".wpforms-settings-provider"),t={action:"wpforms_settings_provider_add",data:n.closest("form").serialize(),provider:n.data("provider"),nonce:wpforms_admin.nonce};n.html("Connecting...").css("width",e).prop("disabled",!0),l.post(wpforms_admin.ajax_url,t,function(e){if(e.success)i.find(".wpforms-settings-provider-accounts-list ul").append(e.data.html),i.addClass("connected"),n.closest(".wpforms-settings-provider-accounts-connect").slideToggle();else{var t=wpforms_admin.provider_auth_error;e.hasOwnProperty("data")&&e.data.hasOwnProperty("error_msg")&&(t+="\n"+e.data.error_msg),l.alert({title:!1,content:t,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})}n.html(o).css("width","auto").prop("disabled",!1)}).fail(function(e){console.log(e.responseText)})},integrationDisconnect:function(e){var n=l(e),o=n.parents(".wpforms-settings-provider"),t={action:"wpforms_settings_provider_disconnect",provider:n.data("provider"),key:n.data("key"),nonce:wpforms_admin.nonce};l.confirm({title:wpforms_admin.heads_up,content:wpforms_admin.provider_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){l.post(wpforms_admin.ajax_url,t,function(e){if(e.success){n.parent().parent().remove();var t=o.find(".wpforms-settings-provider-accounts-list li").length;void 0!==t&&0!==t||o.removeClass("connected")}else console.log(e)}).fail(function(e){console.log(e.responseText)})}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})},initTools:function(){l(document).on("click","#wpforms-ssl-verify",function(e){e.preventDefault(),s.verifySSLConnection()}),l(document).on("click","#wpforms-importer-forms-submit",function(e){if(e.preventDefault(),l("#wpforms-importer-forms input:checked").length){var t=[];l("#wpforms-importer-forms input:checked").each(function(e){t[e]=l(this).val()}),wpforms_admin.isPro?s.importForms(t):s.analyzeForms(t)}else l.alert({title:!1,content:wpforms_admin.importer_forms_required,icon:"fa fa-info-circle",type:"blue",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})}),l(document).on("click","#wpforms-importer-continue-submit",function(e){e.preventDefault(),s.importForms(f.formIDs)})},verifySSLConnection:function(){var t=l("#wpforms-ssl-verify"),n=t.text(),o=t.outerWidth(),i=t.parent(),e={action:"wpforms_verify_ssl",nonce:wpforms_admin.nonce};t.css("width",o).prop("disabled",!0).text(wpforms_admin.testing),l.post(wpforms_admin.ajax_url,e,function(e){console.log(e),i.find(".wpforms-alert, .wpforms-ssl-error").remove(),e.success?t.before('<div class="wpforms-alert wpforms-alert-success">'+e.data.msg+"</div>"):(t.before('<div class="wpforms-alert wpforms-alert-danger">'+e.data.msg+"</div>"),t.before('<div class="wpforms-ssl-error pre-error">'+e.data.debug+"</div>")),t.css("width",o).prop("disabled",!1).text(n)})},analyzeForms:function(e){var t=l("#wpforms-importer-analyze");t.find(".form-total").text(e.length),t.find(".form-current").text("1"),l("#wpforms-importer-forms").hide(),t.show(),f.analyzeQueue=e,f.analyzed=0,f.analyzeUpgrade=[],f.formIDs=e,s.analyzeForm()},analyzeForm:function(){var n=l("#wpforms-importer-analyze"),o=_.first(f.analyzeQueue),e={action:"wpforms_import_form_"+s.getQueryString("provider"),analyze:1,form_id:o,nonce:wpforms_admin.nonce};l.post(wpforms_admin.ajax_url,e,function(e){if(e.success)if(_.isEmpty(e.data.upgrade_plain)&&_.isEmpty(e.data.upgrade_omit)||f.analyzeUpgrade.push({name:e.data.name,fields:_.union(e.data.upgrade_omit,e.data.upgrade_plain)}),f.analyzeQueue=_.without(f.analyzeQueue,o),f.analyzed++,_.isEmpty(f.analyzeQueue))if(_.isEmpty(f.analyzeUpgrade))s.importForms(f.formIDs);else{var t=wp.template("wpforms-importer-upgrade");n.find(".upgrade").append(t(f.analyzeUpgrade)),n.find(".upgrade").show(),n.find(".process-analyze").hide()}else n.find(".form-current").text(f.analyzed+1),s.analyzeForm()})},importForms:function(e){var t=l("#wpforms-importer-process");t.find(".form-total").text(e.length),t.find(".form-current").text("1"),l("#wpforms-importer-forms, #wpforms-importer-analyze").hide(),t.show(),f.importQueue=e,f.imported=0,s.importForm()},importForm:function(){var n=l("#wpforms-importer-process"),o=_.first(f.importQueue),e={action:"wpforms_import_form_"+s.getQueryString("provider"),form_id:o,nonce:wpforms_admin.nonce};l.post(wpforms_admin.ajax_url,e,function(e){var t;e.success&&(t=e.data.error?wp.template("wpforms-importer-status-error"):wp.template("wpforms-importer-status-update"),n.find(".status").prepend(t(e.data)),n.find(".status").show(),f.importQueue=_.without(f.importQueue,o),f.imported++,_.isEmpty(f.importQueue)?(n.find(".process-count").hide(),n.find(".forms-completed").text(f.imported),n.find(".process-completed").show()):(n.find(".form-current").text(f.imported+1),s.importForm()))})},initUpgrades:function(){l(document).on("click","#wpforms-upgrade-143 button",function(e){e.preventDefault();var n=l(this),t=n.outerWidth(),o=l("#wpforms-upgrade-143 .status"),i={action:"wpforms_upgrade_143",nonce:wpforms_admin.nonce,init:!0,incomplete:n.data("incomplete")};n.html(f.iconSpinner).css("width",t).prop("disabled",!0),l.post(wpforms_admin.ajax_url,i,function(e){if(e.success){f.upgraded=Number(e.data.upgraded),f.upgradeTotal=Number(e.data.total);var t=Math.round(Number(f.upgraded)/Number(f.upgradeTotal)*100);n.remove(),o.find(".bar").css("width",t+"%"),o.show().find(".total").text(f.upgradeTotal),o.find(".current").text(f.upgraded),o.find(".percent").text(t+"%"),s.upgrade143()}})})},upgrade143:function(){var n=l("#wpforms-upgrade-143 .status"),e={action:"wpforms_upgrade_143",nonce:wpforms_admin.nonce,upgraded:f.upgraded};l.post(wpforms_admin.ajax_url,e,function(e){if(e.success){f.upgraded=Number(f.upgraded)+Number(e.data.count);var t=Math.round(Number(f.upgraded)/Number(f.upgradeTotal)*100);n.find(".bar").css("width",t+"%"),Number(e.data.count)<10?(n.find(".progress-bar").addClass("complete"),n.find(".msg").text(wpforms_admin.upgrade_completed)):(n.find(".current").text(f.upgraded),n.find(".percent").text(t+"%"),s.upgrade143())}})},isFormTypeNode:function(e){return"TEXTAREA"===(e=e||!1)||"INPUT"===e||"SELECT"===e},getQueryString:function(e){var t=new RegExp("[?&]"+e+"=([^&]*)").exec(window.location.search);return t&&decodeURIComponent(t[1].replace(/\+/g," "))},debug:function(e){s.isDebug()&&("object"==typeof e||e.constructor===Array?(console.log("WPForms Debug:"),console.log(e)):console.log("WPForms Debug: "+e))},isDebug:function(){return window.location.hash&&"#wpformsdebug"===window.location.hash}};s.init(),window.WPFormsAdmin=s}(jQuery);
1
+ !function(l){"use strict";var f,s={settings:{iconActivate:'<i class="fa fa-toggle-on fa-flip-horizontal" aria-hidden="true"></i>',iconDeactivate:'<i class="fa fa-toggle-on" aria-hidden="true"></i>',iconInstall:'<i class="fa fa-cloud-download" aria-hidden="true"></i>',iconSpinner:'<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>',mediaFrame:!1},init:function(){f=this.settings,l(document).ready(s.ready),s.initFormOverview(),s.initEntriesSingle(),s.initEntriesList(),s.initWelcome(),s.initAddons(),s.initSettings(),s.initTools(),s.initUpgrades()},ready:function(){l(".notice").show(),l("#screen-meta-links, #screen-meta").prependTo("#wpforms-header-temp").show(),s.initChoicesJS(),s.initCheckboxMultiselectColumns(),l(".wpforms-color-picker").minicolors(),l(".wpforms-file-upload").each(function(){var e=l(this).find("input[type=file]"),n=l(this).find("label"),o=n.html();e.on("change",function(e){var t="";this.files&&1<this.files.length?t=(this.getAttribute("data-multiple-caption")||"").replace("{count}",this.files.length):e.target.value&&(t=e.target.value.split("\\").pop()),t?n.find(".fld").html(t):n.html(o)}),e.on("focus",function(){e.addClass("has-focus")}).on("blur",function(){e.removeClass("has-focus")})}),jconfirm.defaults={closeIcon:!0,backgroundDismiss:!0,escapeKey:!0,animationBounce:1,useBootstrap:!1,theme:"modern",boxWidth:"400px",animateFromElement:!1},l(document).on("click",".wpforms-upgrade-modal",function(){l.alert({title:!1,content:wpforms_admin.upgrade_modal,icon:"fa fa-info-circle",type:"blue",boxWidth:"565px",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})}),l(document).trigger("wpformsReady")},initChoicesJS:function(){l(".choicesjs-select").each(function(){var e=l(this),t={searchEnabled:!1};e.attr("multiple")&&(t.searchEnabled=!0,t.removeItemButton=!0),e.data("placeholder")&&(t.placeholderValue=e.data("placeholder")),"off"===e.data("sorting")&&(t.shouldSort=!1),e.data("search")&&(t.searchEnabled=!0),t.loadingText=wpforms_admin.choicesjs_loading,t.noResultsText=wpforms_admin.choicesjs_no_results,t.noChoicesText=wpforms_admin.choicesjs_no_choices,t.itemSelectText=wpforms_admin.choicesjs_item_select,new Choices(e[0],t)})},initCheckboxMultiselectColumns:function(){l(document).on("change",".checkbox-multiselect-columns input",function(){var e=l(this),t=e.parent(),n=e.closest(".checkbox-multiselect-columns"),o=t.text(),i="check-item-"+e.val(),s=n.find("#"+i);e.prop("checked")?(e.parent().addClass("checked"),s.length||n.find(".second-column ul").append('<li id="'+i+'">'+o+"</li>")):(e.parent().removeClass("checked"),n.find("#"+i).remove())}),l(document).on("click",".checkbox-multiselect-columns .all",function(e){e.preventDefault(),l(this).closest(".checkbox-multiselect-columns").find("input[type=checkbox]").prop("checked",!0).trigger("change"),l(this).remove()})},initFormOverview:function(){l(document).on("click","#wpforms-overview .wp-list-table .delete a, #wpforms-overview .wp-list-table .duplicate a",function(e){e.preventDefault();var t=l(this).attr("href"),n=l(this).parent().hasClass("delete")?wpforms_admin.form_delete_confirm:wpforms_admin.form_duplicate_confirm;l.confirm({title:!1,content:n,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=t}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})})},initEntriesSingle:function(){"wpforms-entries"===s.getQueryString("page")&&"details"===s.getQueryString("view")&&s.entryHotkeys(),l(document).on("click","#wpforms-entries-single .submitdelete",function(e){e.preventDefault();var t=l(this).attr("href");l.confirm({title:!1,content:wpforms_admin.entry_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=t}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})}),l(document).on("click","#wpforms-entries-single .wpforms-entry-print a",function(e){e.preventDefault(),window.open(l(this).attr("href"))}),l(document).on("click","#wpforms-entries-single .wpforms-empty-field-toggle",function(e){e.preventDefault(),"true"===wpCookies.get("wpforms_entry_hide_empty")?(wpCookies.remove("wpforms_entry_hide_empty"),l(this).text(wpforms_admin.entry_empty_fields_hide)):(wpCookies.set("wpforms_entry_hide_empty","true",2592e3),l(this).text(wpforms_admin.entry_empty_fields_show)),l(".wpforms-entry-field.empty").toggle()}),l(document).on("click","#wpforms-entries-single .wpforms-entry-notes-new .add",function(e){e.preventDefault(),l(this).hide().next("form").slideToggle()}),l(document).on("click","#wpforms-entries-single .wpforms-entry-notes-new .cancel",function(e){e.preventDefault(),l(this).closest("form").slideToggle(),l(".wpforms-entry-notes-new .add").show()}),l(document).on("click","#wpforms-entries-single .wpforms-entry-notes-byline .note-delete",function(e){e.preventDefault();var t=l(this).attr("href");l.confirm({title:!1,content:wpforms_admin.entry_note_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=t}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})})},entryHotkeys:function(){l(document).keydown(function(e){if(74!==e.keyCode||s.isFormTypeNode(e.target.nodeName)){if(75===e.keyCode&&!s.isFormTypeNode(e.target.nodeName)){var t=l("#wpforms-entry-next-link").attr("href");"#"!==t&&(window.location.href=t)}}else{var n=l("#wpforms-entry-prev-link").attr("href");"#"!==n&&(window.location.href=n)}})},initEntriesList:function(){l(document).on("click","#wpforms-entries-table-edit-columns",function(e){e.preventDefault(),s.entriesListFieldColumn()}),l(document).on("click","#wpforms-entries-list .form-selector .toggle",function(e){e.preventDefault(),l(this).toggleClass("active").next(".form-list").toggle()}),l(document).on("click","#wpforms-entries-list .wp-list-table .delete",function(e){e.preventDefault();var t=l(this).attr("href");l.confirm({title:!1,content:wpforms_admin.entry_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=t}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})}),l(document).on("click","#wpforms-entries-list .wp-list-table .indicator-star",function(e){e.preventDefault();var t=l(this),n="",o=Number(l("#wpforms-entries-list .starred-num").text()),i=t.data("id");t.hasClass("star")?(n="star",o++,t.attr("title",wpforms_admin.entry_unstar)):(n="unstar",o--,t.attr("title",wpforms_admin.entry_star)),t.toggleClass("star unstar"),l("#wpforms-entries-list .starred-num").text(o);var s={task:n,action:"wpforms_entry_list_star",nonce:wpforms_admin.nonce,entry_id:i};l.post(wpforms_admin.ajax_url,s)}),l(document).on("click","#wpforms-entries-list .wp-list-table .indicator-read",function(e){e.preventDefault();var t=l(this),n="",o=Number(l("#wpforms-entries-list .unread-num").text()),i=t.data("id");t.hasClass("read")?(n="read",o--,t.attr("title",wpforms_admin.entry_unread)):(n="unread",o++,t.attr("title",wpforms_admin.entry_read)),t.toggleClass("read unread"),l("#wpforms-entries-list .unread-num").text(o);var s={task:n,action:"wpforms_entry_list_read",nonce:wpforms_admin.nonce,entry_id:i};l.post(wpforms_admin.ajax_url,s)}),l(document).on("click","#wpforms-entries-list .form-details-actions-deleteall",function(e){e.preventDefault();var t=l(this).attr("href");l.confirm({title:wpforms_admin.heads_up,content:wpforms_admin.entry_delete_all_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=t}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})}),l(document).on("heartbeat-send",function(e,t){var n=l("#wpforms-entries-list");if(n.length){var o=n.find("#wpforms-entries-table").data("last-entry-id");void 0!==o&&(t.wpforms_new_entries_entry_id=o,t.wpforms_new_entries_form_id=n.find("input[name=form_id]").val())}}),l(document).on("heartbeat-tick",function(e,t){var n,o=l("#wpforms-entries-list");o.length&&t.wpforms_new_entries_notification&&(n=o.find(".wp-list-table thead tr").first().children().length,o.find(".new-entries-notification").length||o.find(".wp-list-table thead").append('<tr class="new-entries-notification"><td colspan="'+n+'"><a href=""></a></td></tr>'),o.find(".new-entries-notification a").text(t.wpforms_new_entries_notification).slideDown({duration:500,start:function(){l(this).css({display:"block"})}}))})},entriesListFieldColumn:function(){l.alert({title:wpforms_admin.entry_field_columns,boxWidth:"500px",content:f.iconSpinner+l("#wpforms-field-column-select").html(),onContentReady:function(){var e=this.$content,t=e.find("select"),n=new Choices(t[0],{shouldSort:!1,removeItemButton:!0,placeholderValue:wpforms_admin.choicesjs_fields_select+"...",loadingText:wpforms_admin.choicesjs_loading,noResultsText:wpforms_admin.choicesjs_no_results,noChoicesText:wpforms_admin.choicesjs_no_choices,itemSelectText:wpforms_admin.choicesjs_item_select,callbackOnInit:function(){e.find(".fa").remove(),e.find("form").show()}});l(".jconfirm-content-pane, .jconfirm-box").css("overflow","visible"),n.passedElement.addEventListener("change",function(){n.hideDropdown()},!1)},buttons:{confirm:{text:wpforms_admin.save_refresh,btnClass:"btn-confirm",keys:["enter"],action:function(){this.$content.find("form").submit()}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})},initWelcome:function(){l(document).on("click","#wpforms-welcome .play-video",function(e){e.preventDefault();l.dialog({title:!1,content:'<div class="video-container"><iframe width="1280" height="720" src="https://www.youtube-nocookie.com/embed/yDyvSGV7tP4?rel=0&amp;showinfo=0&amp;autoplay=1" frameborder="0" allowfullscreen></iframe></div>',closeIcon:!0,boxWidth:"70%"})})},initAddons:function(){l(document).on("wpformsReady",function(){if(l("#wpforms-admin-addons").length&&(l(".addon-item .details").matchHeight({byrow:!1,property:"height"}),l("#wpforms-admin-addons-list").length)){var n=new List("wpforms-admin-addons-list",{valueNames:["addon-name"]});l("#wpforms-admin-addons-search").on("keyup",function(){var e=l(this).val(),t=l("#addons-heading");e?t.text(wpforms_admin.addon_search):t.text(t.data("text")),n.search(e)})}}),l(document).on("click","#wpforms-admin-addons .addon-item button",function(e){if(e.preventDefault(),l(this).hasClass("disabled"))return!1;s.addonToggle(l(this))})},addonToggle:function(t){var n,o,i,s,a,r,c=t.closest(".addon-item"),e=t.attr("data-plugin"),d=t.attr("data-type");if(t.hasClass("status-go-to-url"))window.open(t.attr("data-plugin"),"_blank");else{if(t.prop("disabled",!0).addClass("loading"),t.html(f.iconSpinner),t.hasClass("status-active"))n="wpforms_deactivate_addon",o="status-inactive","plugin"===d&&(o+=" button button-secondary"),i=wpforms_admin.addon_inactive,s=wpforms_admin.addon_activate,"addon"===d&&(s=f.iconActivate+s),a=f.iconDeactivate+wpforms_admin.addon_deactivate;else if(t.hasClass("status-inactive"))n="wpforms_activate_addon",o="status-active","plugin"===d&&(o+=" button button-secondary disabled"),i=wpforms_admin.addon_active,s=wpforms_admin.addon_deactivate,"addon"===d?s=f.iconDeactivate+s:"plugin"===d&&(s=wpforms_admin.addon_activated),a=f.iconActivate+wpforms_admin.addon_activate;else{if(!t.hasClass("status-download"))return;n="wpforms_install_addon",o="status-active","plugin"===d&&(o+=" button disabled"),i=wpforms_admin.addon_active,s=wpforms_admin.addon_activated,"addon"===d&&(s=f.iconActivate+wpforms_admin.addon_deactivate),a=f.iconInstall+wpforms_admin.addon_activate}var m={action:n,nonce:wpforms_admin.nonce,plugin:e,type:d};l.post(wpforms_admin.ajax_url,m,function(e){e.success?("wpforms_install_addon"===n?(t.attr("data-plugin",e.data.basename),r=e.data.msg,e.data.is_activated||(o="status-inactive","plugin"===d&&(o="button"),i=wpforms_admin.addon_inactive,s=f.iconActivate+wpforms_admin.addon_activate)):r=e.data,c.find(".actions").append('<div class="msg success">'+r+"</div>"),c.find("span.status-label").removeClass("status-active status-inactive status-download").addClass(o).removeClass("button button-primary button-secondary disabled").text(i),t.removeClass("status-active status-inactive status-download").removeClass("button button-primary button-secondary disabled").addClass(o).html(s)):("download_failed"===e.data[0].code?"addon"===d?c.find(".actions").append('<div class="msg error">'+wpforms_admin.addon_error+"</div>"):c.find(".actions").append('<div class="msg error">'+wpforms_admin.plugin_error+"</div>"):c.find(".actions").append('<div class="msg error">'+e.data+"</div>"),t.html(a)),t.prop("disabled",!1).removeClass("loading"),setTimeout(function(){l(".addon-item .msg").remove()},3e3)}).fail(function(e){console.log(e.responseText)})}},initSettings:function(){l(document).on("wpformsReady",function(){if(l("#wpforms-settings").length){var e=s.getQueryString("wpforms-integration"),t=s.getQueryString("jump");e?l("body").animate({scrollTop:l("#wpforms-integration-"+e).offset().top},1e3):t&&l("body").animate({scrollTop:l("#"+t).offset().top},1e3),l(".wpforms-admin-settings-form").conditions([{conditions:{element:"#wpforms-setting-gdpr",type:"checked",operator:"is"},actions:{if:{element:"#wpforms-setting-row-gdpr-disable-uuid,#wpforms-setting-row-gdpr-disable-details",action:"show"},else:{element:"#wpforms-setting-row-gdpr-disable-uuid,#wpforms-setting-row-gdpr-disable-details",action:"hide"}},effect:"appear"},{conditions:{element:"input[name=recaptcha-type]:checked",type:"value",operator:"=",condition:"v3"},actions:{if:{element:"#wpforms-setting-row-recaptcha-v3-threshold",action:"show"},else:{element:"#wpforms-setting-row-recaptcha-v3-threshold",action:"hide"}},effect:"appear"}])}}),l(document).on("change","#wpforms-setting-disable-css",function(){s.settingsFormStylesAlert(l(this).val())}),l(document).on("click",".wpforms-setting-row-image button",function(e){e.preventDefault(),s.imageUploadModal(l(this))}),l(document).on("click","#wpforms-setting-license-key-verify",function(e){e.preventDefault(),s.licenseVerify(l(this))}),l(document).on("click","#wpforms-setting-license-key-deactivate",function(e){e.preventDefault(),s.licenseDeactivate(l(this))}),l(document).on("click","#wpforms-setting-license-key-refresh",function(e){e.preventDefault(),s.licenseRefresh(l(this))}),l(document).on("click",".wpforms-settings-provider-connect",function(e){e.preventDefault();var t=l(this);s.integrationConnect(t)}),l(document).on("click",".wpforms-settings-provider-accounts-list a",function(e){e.preventDefault(),s.integrationDisconnect(l(this))}),l(document).on("click",".wpforms-settings-provider-header",function(e){e.preventDefault(),l(this).parent().find(".wpforms-settings-provider-accounts").slideToggle(),l(this).parent().find(".wpforms-settings-provider-logo i").toggleClass("fa-chevron-right fa-chevron-down")}),l(document).on("click",".wpforms-settings-provider-accounts-toggle a",function(e){e.preventDefault();var t=l(this).parent().next(".wpforms-settings-provider-accounts-connect");t.find("input[type=text], input[type=password]").val(""),t.slideToggle()})},settingsFormStylesAlert:function(e){if("2"===e)var t=wpforms_admin.settings_form_style_base;else{if("3"!==e)return;t=wpforms_admin.settings_form_style_none}l.alert({title:wpforms_admin.heads_up,content:t,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})},imageUploadModal:function(e){if(f.media_frame)f.media_frame.open();else{var t=l(e).closest(".wpforms-setting-field");f.media_frame=wp.media.frames.wpforms_media_frame=wp.media({className:"media-frame wpforms-media-frame",frame:"select",multiple:!1,title:wpforms_admin.upload_image_title,library:{type:"image"},button:{text:wpforms_admin.upload_image_button}}),f.media_frame.on("select",function(){var e=f.media_frame.state().get("selection").first().toJSON();t.find("input[type=text]").val(e.url),t.find("img").remove(),t.prepend('<img src="'+e.url+'">')}),f.media_frame.open()}},licenseVerify:function(e){var i=l(e),s=i.closest(".wpforms-setting-row"),t=i.outerWidth(),a=i.text(),n={action:"wpforms_verify_license",nonce:wpforms_admin.nonce,license:l("#wpforms-setting-license-key").val()};i.html(f.iconSpinner).css("width",t).prop("disabled",!0),l.post(wpforms_admin.ajax_url,n,function(e){var t,n="fa fa-check-circle",o="green";e.success?(t=e.data.msg,s.find(".type, .desc, #wpforms-setting-license-key-deactivate").show(),s.find(".type strong").text(e.data.type),l(".wpforms-license-notice").remove()):(n="fa fa-exclamation-circle",o="orange",t=e.data,s.find(".type, .desc, #wpforms-setting-license-key-deactivate").hide()),l.alert({title:!1,content:t,icon:n,type:o,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}}),i.html(a).css("width","auto").prop("disabled",!1)}).fail(function(e){console.log(e.responseText)})},licenseDeactivate:function(e){var i=l(e),s=i.closest(".wpforms-setting-row"),t=i.outerWidth(),a=i.text(),n={action:"wpforms_deactivate_license",nonce:wpforms_admin.nonce};i.html(f.iconSpinner).css("width",t).prop("disabled",!0),l.post(wpforms_admin.ajax_url,n,function(e){var t="fa fa-info-circle",n="blue",o=e.data;e.success?(s.find("#wpforms-setting-license-key").val(""),s.find(".type, .desc, #wpforms-setting-license-key-deactivate").hide()):(t="fa fa-exclamation-circle",n="orange"),l.alert({title:!1,content:o,icon:t,type:n,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}}),i.html(a).css("width","auto").prop("disabled",!1)}).fail(function(e){console.log(e.responseText)})},licenseRefresh:function(e){var i=l(e).closest(".wpforms-setting-row"),t={action:"wpforms_refresh_license",nonce:wpforms_admin.nonce,license:l("#wpforms-setting-license-key").val()};l.post(wpforms_admin.ajax_url,t,function(e){var t,n="fa fa-check-circle",o="green";e.success?(t=e.data.msg,i.find(".type strong").text(e.data.type)):(n="fa fa-exclamation-circle",o="orange",t=e.data,i.find(".type, .desc, #wpforms-setting-license-key-deactivate").hide()),l.alert({title:!1,content:t,icon:n,type:o,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})}).fail(function(e){console.log(e.responseText)})},integrationConnect:function(n){var e=n.outerWidth(),o=n.text(),i=n.closest(".wpforms-settings-provider"),t={action:"wpforms_settings_provider_add",data:n.closest("form").serialize(),provider:n.data("provider"),nonce:wpforms_admin.nonce};n.html("Connecting...").css("width",e).prop("disabled",!0),l.post(wpforms_admin.ajax_url,t,function(e){if(e.success)i.find(".wpforms-settings-provider-accounts-list ul").append(e.data.html),i.addClass("connected"),n.closest(".wpforms-settings-provider-accounts-connect").slideToggle();else{var t=wpforms_admin.provider_auth_error;e.hasOwnProperty("data")&&e.data.hasOwnProperty("error_msg")&&(t+="\n"+e.data.error_msg),l.alert({title:!1,content:t,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})}n.html(o).css("width","auto").prop("disabled",!1)}).fail(function(e){console.log(e.responseText)})},integrationDisconnect:function(e){var n=l(e),o=n.parents(".wpforms-settings-provider"),t={action:"wpforms_settings_provider_disconnect",provider:n.data("provider"),key:n.data("key"),nonce:wpforms_admin.nonce};l.confirm({title:wpforms_admin.heads_up,content:wpforms_admin.provider_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){l.post(wpforms_admin.ajax_url,t,function(e){if(e.success){n.parent().parent().remove();var t=o.find(".wpforms-settings-provider-accounts-list li").length;void 0!==t&&0!==t||o.removeClass("connected")}else console.log(e)}).fail(function(e){console.log(e.responseText)})}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})},initTools:function(){l(document).on("click","#wpforms-ssl-verify",function(e){e.preventDefault(),s.verifySSLConnection()}),l(document).on("click","#wpforms-importer-forms-submit",function(e){if(e.preventDefault(),l("#wpforms-importer-forms input:checked").length){var t=[];l("#wpforms-importer-forms input:checked").each(function(e){t[e]=l(this).val()}),wpforms_admin.isPro?s.importForms(t):s.analyzeForms(t)}else l.alert({title:!1,content:wpforms_admin.importer_forms_required,icon:"fa fa-info-circle",type:"blue",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})}),l(document).on("click","#wpforms-importer-continue-submit",function(e){e.preventDefault(),s.importForms(f.formIDs)})},verifySSLConnection:function(){var t=l("#wpforms-ssl-verify"),n=t.text(),o=t.outerWidth(),i=t.parent(),e={action:"wpforms_verify_ssl",nonce:wpforms_admin.nonce};t.css("width",o).prop("disabled",!0).text(wpforms_admin.testing),l.post(wpforms_admin.ajax_url,e,function(e){console.log(e),i.find(".wpforms-alert, .wpforms-ssl-error").remove(),e.success?t.before('<div class="wpforms-alert wpforms-alert-success">'+e.data.msg+"</div>"):(t.before('<div class="wpforms-alert wpforms-alert-danger">'+e.data.msg+"</div>"),t.before('<div class="wpforms-ssl-error pre-error">'+e.data.debug+"</div>")),t.css("width",o).prop("disabled",!1).text(n)})},analyzeForms:function(e){var t=l("#wpforms-importer-analyze");t.find(".form-total").text(e.length),t.find(".form-current").text("1"),l("#wpforms-importer-forms").hide(),t.show(),f.analyzeQueue=e,f.analyzed=0,f.analyzeUpgrade=[],f.formIDs=e,s.analyzeForm()},analyzeForm:function(){var n=l("#wpforms-importer-analyze"),o=_.first(f.analyzeQueue),e={action:"wpforms_import_form_"+s.getQueryString("provider"),analyze:1,form_id:o,nonce:wpforms_admin.nonce};l.post(wpforms_admin.ajax_url,e,function(e){if(e.success)if(_.isEmpty(e.data.upgrade_plain)&&_.isEmpty(e.data.upgrade_omit)||f.analyzeUpgrade.push({name:e.data.name,fields:_.union(e.data.upgrade_omit,e.data.upgrade_plain)}),f.analyzeQueue=_.without(f.analyzeQueue,o),f.analyzed++,_.isEmpty(f.analyzeQueue))if(_.isEmpty(f.analyzeUpgrade))s.importForms(f.formIDs);else{var t=wp.template("wpforms-importer-upgrade");n.find(".upgrade").append(t(f.analyzeUpgrade)),n.find(".upgrade").show(),n.find(".process-analyze").hide()}else n.find(".form-current").text(f.analyzed+1),s.analyzeForm()})},importForms:function(e){var t=l("#wpforms-importer-process");t.find(".form-total").text(e.length),t.find(".form-current").text("1"),l("#wpforms-importer-forms, #wpforms-importer-analyze").hide(),t.show(),f.importQueue=e,f.imported=0,s.importForm()},importForm:function(){var n=l("#wpforms-importer-process"),o=_.first(f.importQueue),e={action:"wpforms_import_form_"+s.getQueryString("provider"),form_id:o,nonce:wpforms_admin.nonce};l.post(wpforms_admin.ajax_url,e,function(e){var t;e.success&&(t=e.data.error?wp.template("wpforms-importer-status-error"):wp.template("wpforms-importer-status-update"),n.find(".status").prepend(t(e.data)),n.find(".status").show(),f.importQueue=_.without(f.importQueue,o),f.imported++,_.isEmpty(f.importQueue)?(n.find(".process-count").hide(),n.find(".forms-completed").text(f.imported),n.find(".process-completed").show()):(n.find(".form-current").text(f.imported+1),s.importForm()))})},initUpgrades:function(){l(document).on("click","#wpforms-upgrade-143 button",function(e){e.preventDefault();var n=l(this),t=n.outerWidth(),o=l("#wpforms-upgrade-143 .status"),i={action:"wpforms_upgrade_143",nonce:wpforms_admin.nonce,init:!0,incomplete:n.data("incomplete")};n.html(f.iconSpinner).css("width",t).prop("disabled",!0),l.post(wpforms_admin.ajax_url,i,function(e){if(e.success){f.upgraded=Number(e.data.upgraded),f.upgradeTotal=Number(e.data.total);var t=Math.round(Number(f.upgraded)/Number(f.upgradeTotal)*100);n.remove(),o.find(".bar").css("width",t+"%"),o.show().find(".total").text(f.upgradeTotal),o.find(".current").text(f.upgraded),o.find(".percent").text(t+"%"),s.upgrade143()}})})},upgrade143:function(){var n=l("#wpforms-upgrade-143 .status"),e={action:"wpforms_upgrade_143",nonce:wpforms_admin.nonce,upgraded:f.upgraded};l.post(wpforms_admin.ajax_url,e,function(e){if(e.success){f.upgraded=Number(f.upgraded)+Number(e.data.count);var t=Math.round(Number(f.upgraded)/Number(f.upgradeTotal)*100);n.find(".bar").css("width",t+"%"),Number(e.data.count)<10?(n.find(".progress-bar").addClass("complete"),n.find(".msg").text(wpforms_admin.upgrade_completed)):(n.find(".current").text(f.upgraded),n.find(".percent").text(t+"%"),s.upgrade143())}})},isFormTypeNode:function(e){return"TEXTAREA"===(e=e||!1)||"INPUT"===e||"SELECT"===e},getQueryString:function(e){var t=new RegExp("[?&]"+e+"=([^&]*)").exec(window.location.search);return t&&decodeURIComponent(t[1].replace(/\+/g," "))},debug:function(e){s.isDebug()&&("object"==typeof e||e.constructor===Array?(console.log("WPForms Debug:"),console.log(e)):console.log("WPForms Debug: "+e))},isDebug:function(){return window.location.hash&&"#wpformsdebug"===window.location.hash}};s.init(),window.WPFormsAdmin=s}(jQuery);
assets/js/jquery.validate.js ADDED
@@ -0,0 +1,1652 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * jQuery Validation Plugin v1.19.0
3
+ *
4
+ * https://jqueryvalidation.org/
5
+ *
6
+ * Copyright (c) 2018 Jörn Zaefferer
7
+ * Released under the MIT license
8
+ */
9
+ (function( factory ) {
10
+ if ( typeof define === "function" && define.amd ) {
11
+ define( ["jquery"], factory );
12
+ } else if (typeof module === "object" && module.exports) {
13
+ module.exports = factory( require( "jquery" ) );
14
+ } else {
15
+ factory( jQuery );
16
+ }
17
+ }(function( $ ) {
18
+
19
+ $.extend( $.fn, {
20
+
21
+ // https://jqueryvalidation.org/validate/
22
+ validate: function( options ) {
23
+
24
+ // If nothing is selected, return nothing; can't chain anyway
25
+ if ( !this.length ) {
26
+ if ( options && options.debug && window.console ) {
27
+ console.warn( "Nothing selected, can't validate, returning nothing." );
28
+ }
29
+ return;
30
+ }
31
+
32
+ // Check if a validator for this form was already created
33
+ var validator = $.data( this[ 0 ], "validator" );
34
+ if ( validator ) {
35
+ return validator;
36
+ }
37
+
38
+ // Add novalidate tag if HTML5.
39
+ this.attr( "novalidate", "novalidate" );
40
+
41
+ validator = new $.validator( options, this[ 0 ] );
42
+ $.data( this[ 0 ], "validator", validator );
43
+
44
+ if ( validator.settings.onsubmit ) {
45
+
46
+ this.on( "click.validate", ":submit", function( event ) {
47
+
48
+ // Track the used submit button to properly handle scripted
49
+ // submits later.
50
+ validator.submitButton = event.currentTarget;
51
+
52
+ // Allow suppressing validation by adding a cancel class to the submit button
53
+ if ( $( this ).hasClass( "cancel" ) ) {
54
+ validator.cancelSubmit = true;
55
+ }
56
+
57
+ // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
58
+ if ( $( this ).attr( "formnovalidate" ) !== undefined ) {
59
+ validator.cancelSubmit = true;
60
+ }
61
+ } );
62
+
63
+ // Validate the form on submit
64
+ this.on( "submit.validate", function( event ) {
65
+ if ( validator.settings.debug ) {
66
+
67
+ // Prevent form submit to be able to see console output
68
+ event.preventDefault();
69
+ }
70
+
71
+ function handle() {
72
+ var hidden, result;
73
+
74
+ // Insert a hidden input as a replacement for the missing submit button
75
+ // The hidden input is inserted in two cases:
76
+ // - A user defined a `submitHandler`
77
+ // - There was a pending request due to `remote` method and `stopRequest()`
78
+ // was called to submit the form in case it's valid
79
+ if ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {
80
+ hidden = $( "<input type='hidden'/>" )
81
+ .attr( "name", validator.submitButton.name )
82
+ .val( $( validator.submitButton ).val() )
83
+ .appendTo( validator.currentForm );
84
+ }
85
+
86
+ if ( validator.settings.submitHandler && !validator.settings.debug ) {
87
+ result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
88
+ if ( hidden ) {
89
+
90
+ // And clean up afterwards; thanks to no-block-scope, hidden can be referenced
91
+ hidden.remove();
92
+ }
93
+ if ( result !== undefined ) {
94
+ return result;
95
+ }
96
+ return false;
97
+ }
98
+ return true;
99
+ }
100
+
101
+ // Prevent submit for invalid forms or custom submit handlers
102
+ if ( validator.cancelSubmit ) {
103
+ validator.cancelSubmit = false;
104
+ return handle();
105
+ }
106
+ if ( validator.form() ) {
107
+ if ( validator.pendingRequest ) {
108
+ validator.formSubmitted = true;
109
+ return false;
110
+ }
111
+ return handle();
112
+ } else {
113
+ validator.focusInvalid();
114
+ return false;
115
+ }
116
+ } );
117
+ }
118
+
119
+ return validator;
120
+ },
121
+
122
+ // https://jqueryvalidation.org/valid/
123
+ valid: function() {
124
+ var valid, validator, errorList;
125
+
126
+ if ( $( this[ 0 ] ).is( "form" ) ) {
127
+ valid = this.validate().form();
128
+ } else {
129
+ errorList = [];
130
+ valid = true;
131
+ validator = $( this[ 0 ].form ).validate();
132
+ this.each( function() {
133
+ valid = validator.element( this ) && valid;
134
+ if ( !valid ) {
135
+ errorList = errorList.concat( validator.errorList );
136
+ }
137
+ } );
138
+ validator.errorList = errorList;
139
+ }
140
+ return valid;
141
+ },
142
+
143
+ // https://jqueryvalidation.org/rules/
144
+ rules: function( command, argument ) {
145
+ var element = this[ 0 ],
146
+ isContentEditable = typeof this.attr( "contenteditable" ) !== "undefined" && this.attr( "contenteditable" ) !== "false",
147
+ settings, staticRules, existingRules, data, param, filtered;
148
+
149
+ // If nothing is selected, return empty object; can't chain anyway
150
+ if ( element == null ) {
151
+ return;
152
+ }
153
+
154
+ if ( !element.form && isContentEditable ) {
155
+ element.form = this.closest( "form" )[ 0 ];
156
+ element.name = this.attr( "name" );
157
+ }
158
+
159
+ if ( element.form == null ) {
160
+ return;
161
+ }
162
+
163
+ if ( command ) {
164
+ settings = $.data( element.form, "validator" ).settings;
165
+ staticRules = settings.rules;
166
+ existingRules = $.validator.staticRules( element );
167
+ switch ( command ) {
168
+ case "add":
169
+ $.extend( existingRules, $.validator.normalizeRule( argument ) );
170
+
171
+ // Remove messages from rules, but allow them to be set separately
172
+ delete existingRules.messages;
173
+ staticRules[ element.name ] = existingRules;
174
+ if ( argument.messages ) {
175
+ settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );
176
+ }
177
+ break;
178
+ case "remove":
179
+ if ( !argument ) {
180
+ delete staticRules[ element.name ];
181
+ return existingRules;
182
+ }
183
+ filtered = {};
184
+ $.each( argument.split( /\s/ ), function( index, method ) {
185
+ filtered[ method ] = existingRules[ method ];
186
+ delete existingRules[ method ];
187
+ } );
188
+ return filtered;
189
+ }
190
+ }
191
+
192
+ data = $.validator.normalizeRules(
193
+ $.extend(
194
+ {},
195
+ $.validator.classRules( element ),
196
+ $.validator.attributeRules( element ),
197
+ $.validator.dataRules( element ),
198
+ $.validator.staticRules( element )
199
+ ), element );
200
+
201
+ // Make sure required is at front
202
+ if ( data.required ) {
203
+ param = data.required;
204
+ delete data.required;
205
+ data = $.extend( { required: param }, data );
206
+ }
207
+
208
+ // Make sure remote is at back
209
+ if ( data.remote ) {
210
+ param = data.remote;
211
+ delete data.remote;
212
+ data = $.extend( data, { remote: param } );
213
+ }
214
+
215
+ return data;
216
+ }
217
+ } );
218
+
219
+ // Custom selectors
220
+ $.extend( $.expr.pseudos || $.expr[ ":" ], { // '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support
221
+
222
+ // https://jqueryvalidation.org/blank-selector/
223
+ blank: function( a ) {
224
+ return !$.trim( "" + $( a ).val() );
225
+ },
226
+
227
+ // https://jqueryvalidation.org/filled-selector/
228
+ filled: function( a ) {
229
+ var val = $( a ).val();
230
+ return val !== null && !!$.trim( "" + val );
231
+ },
232
+
233
+ // https://jqueryvalidation.org/unchecked-selector/
234
+ unchecked: function( a ) {
235
+ return !$( a ).prop( "checked" );
236
+ }
237
+ } );
238
+
239
+ // Constructor for validator
240
+ $.validator = function( options, form ) {
241
+ this.settings = $.extend( true, {}, $.validator.defaults, options );
242
+ this.currentForm = form;
243
+ this.init();
244
+ };
245
+
246
+ // https://jqueryvalidation.org/jQuery.validator.format/
247
+ $.validator.format = function( source, params ) {
248
+ if ( arguments.length === 1 ) {
249
+ return function() {
250
+ var args = $.makeArray( arguments );
251
+ args.unshift( source );
252
+ return $.validator.format.apply( this, args );
253
+ };
254
+ }
255
+ if ( params === undefined ) {
256
+ return source;
257
+ }
258
+ if ( arguments.length > 2 && params.constructor !== Array ) {
259
+ params = $.makeArray( arguments ).slice( 1 );
260
+ }
261
+ if ( params.constructor !== Array ) {
262
+ params = [ params ];
263
+ }
264
+ $.each( params, function( i, n ) {
265
+ source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
266
+ return n;
267
+ } );
268
+ } );
269
+ return source;
270
+ };
271
+
272
+ $.extend( $.validator, {
273
+
274
+ defaults: {
275
+ messages: {},
276
+ groups: {},
277
+ rules: {},
278
+ errorClass: "error",
279
+ pendingClass: "pending",
280
+ validClass: "valid",
281
+ errorElement: "label",
282
+ focusCleanup: false,
283
+ focusInvalid: true,
284
+ errorContainer: $( [] ),
285
+ errorLabelContainer: $( [] ),
286
+ onsubmit: true,
287
+ ignore: ":hidden",
288
+ ignoreTitle: false,
289
+ onfocusin: function( element ) {
290
+ this.lastActive = element;
291
+
292
+ // Hide error label and remove error class on focus if enabled
293
+ if ( this.settings.focusCleanup ) {
294
+ if ( this.settings.unhighlight ) {
295
+ this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
296
+ }
297
+ this.hideThese( this.errorsFor( element ) );
298
+ }
299
+ },
300
+ onfocusout: function( element ) {
301
+ if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {
302
+ this.element( element );
303
+ }
304
+ },
305
+ onkeyup: function( element, event ) {
306
+
307
+ // Avoid revalidate the field when pressing one of the following keys
308
+ // Shift => 16
309
+ // Ctrl => 17
310
+ // Alt => 18
311
+ // Caps lock => 20
312
+ // End => 35
313
+ // Home => 36
314
+ // Left arrow => 37
315
+ // Up arrow => 38
316
+ // Right arrow => 39
317
+ // Down arrow => 40
318
+ // Insert => 45
319
+ // Num lock => 144
320
+ // AltGr key => 225
321
+ var excludedKeys = [
322
+ 16, 17, 18, 20, 35, 36, 37,
323
+ 38, 39, 40, 45, 144, 225
324
+ ];
325
+
326
+ if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
327
+ return;
328
+ } else if ( element.name in this.submitted || element.name in this.invalid ) {
329
+ this.element( element );
330
+ }
331
+ },
332
+ onclick: function( element ) {
333
+
334
+ // Click on selects, radiobuttons and checkboxes
335
+ if ( element.name in this.submitted ) {
336
+ this.element( element );
337
+
338
+ // Or option elements, check parent select in that case
339
+ } else if ( element.parentNode.name in this.submitted ) {
340
+ this.element( element.parentNode );
341
+ }
342
+ },
343
+ highlight: function( element, errorClass, validClass ) {
344
+ if ( element.type === "radio" ) {
345
+ this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
346
+ } else {
347
+ $( element ).addClass( errorClass ).removeClass( validClass );
348
+ }
349
+ },
350
+ unhighlight: function( element, errorClass, validClass ) {
351
+ if ( element.type === "radio" ) {
352
+ this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
353
+ } else {
354
+ $( element ).removeClass( errorClass ).addClass( validClass );
355
+ }
356
+ }
357
+ },
358
+
359
+ // https://jqueryvalidation.org/jQuery.validator.setDefaults/
360
+ setDefaults: function( settings ) {
361
+ $.extend( $.validator.defaults, settings );
362
+ },
363
+
364
+ messages: {
365
+ required: "This field is required.",
366
+ remote: "Please fix this field.",
367
+ email: "Please enter a valid email address.",
368
+ url: "Please enter a valid URL.",
369
+ date: "Please enter a valid date.",
370
+ dateISO: "Please enter a valid date (ISO).",
371
+ number: "Please enter a valid number.",
372
+ digits: "Please enter only digits.",
373
+ equalTo: "Please enter the same value again.",
374
+ maxlength: $.validator.format( "Please enter no more than {0} characters." ),
375
+ minlength: $.validator.format( "Please enter at least {0} characters." ),
376
+ rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
377
+ range: $.validator.format( "Please enter a value between {0} and {1}." ),
378
+ max: $.validator.format( "Please enter a value less than or equal to {0}." ),
379
+ min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
380
+ step: $.validator.format( "Please enter a multiple of {0}." )
381
+ },
382
+
383
+ autoCreateRanges: false,
384
+
385
+ prototype: {
386
+
387
+ init: function() {
388
+ this.labelContainer = $( this.settings.errorLabelContainer );
389
+ this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
390
+ this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
391
+ this.submitted = {};
392
+ this.valueCache = {};
393
+ this.pendingRequest = 0;
394
+ this.pending = {};
395
+ this.invalid = {};
396
+ this.reset();
397
+
398
+ var currentForm = this.currentForm,
399
+ groups = ( this.groups = {} ),
400
+ rules;
401
+ $.each( this.settings.groups, function( key, value ) {
402
+ if ( typeof value === "string" ) {
403
+ value = value.split( /\s/ );
404
+ }
405
+ $.each( value, function( index, name ) {
406
+ groups[ name ] = key;
407
+ } );
408
+ } );
409
+ rules = this.settings.rules;
410
+ $.each( rules, function( key, value ) {
411
+ rules[ key ] = $.validator.normalizeRule( value );
412
+ } );
413
+
414
+ function delegate( event ) {
415
+ var isContentEditable = typeof $( this ).attr( "contenteditable" ) !== "undefined" && $( this ).attr( "contenteditable" ) !== "false";
416
+
417
+ // Set form expando on contenteditable
418
+ if ( !this.form && isContentEditable ) {
419
+ this.form = $( this ).closest( "form" )[ 0 ];
420
+ this.name = $( this ).attr( "name" );
421
+ }
422
+
423
+ // Ignore the element if it belongs to another form. This will happen mainly
424
+ // when setting the `form` attribute of an input to the id of another form.
425
+ if ( currentForm !== this.form ) {
426
+ return;
427
+ }
428
+
429
+ var validator = $.data( this.form, "validator" ),
430
+ eventType = "on" + event.type.replace( /^validate/, "" ),
431
+ settings = validator.settings;
432
+ if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
433
+ settings[ eventType ].call( validator, this, event );
434
+ }
435
+ }
436
+
437
+ $( this.currentForm )
438
+ .on( "focusin.validate focusout.validate keyup.validate",
439
+ ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
440
+ "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
441
+ "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
442
+ "[type='radio'], [type='checkbox'], [contenteditable], [type='button']", delegate )
443
+
444
+ // Support: Chrome, oldIE
445
+ // "select" is provided as event.target when clicking a option
446
+ .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
447
+
448
+ if ( this.settings.invalidHandler ) {
449
+ $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
450
+ }
451
+ },
452
+
453
+ // https://jqueryvalidation.org/Validator.form/
454
+ form: function() {
455
+ this.checkForm();
456
+ $.extend( this.submitted, this.errorMap );
457
+ this.invalid = $.extend( {}, this.errorMap );
458
+ if ( !this.valid() ) {
459
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
460
+ }
461
+ this.showErrors();
462
+ return this.valid();
463
+ },
464
+
465
+ checkForm: function() {
466
+ this.prepareForm();
467
+ for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {
468
+ this.check( elements[ i ] );
469
+ }
470
+ return this.valid();
471
+ },
472
+
473
+ // https://jqueryvalidation.org/Validator.element/
474
+ element: function( element ) {
475
+ var cleanElement = this.clean( element ),
476
+ checkElement = this.validationTargetFor( cleanElement ),
477
+ v = this,
478
+ result = true,
479
+ rs, group;
480
+
481
+ if ( checkElement === undefined ) {
482
+ delete this.invalid[ cleanElement.name ];
483
+ } else {
484
+ this.prepareElement( checkElement );
485
+ this.currentElements = $( checkElement );
486
+
487
+ // If this element is grouped, then validate all group elements already
488
+ // containing a value
489
+ group = this.groups[ checkElement.name ];
490
+ if ( group ) {
491
+ $.each( this.groups, function( name, testgroup ) {
492
+ if ( testgroup === group && name !== checkElement.name ) {
493
+ cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
494
+ if ( cleanElement && cleanElement.name in v.invalid ) {
495
+ v.currentElements.push( cleanElement );
496
+ result = v.check( cleanElement ) && result;
497
+ }
498
+ }
499
+ } );
500
+ }
501
+
502
+ rs = this.check( checkElement ) !== false;
503
+ result = result && rs;
504
+ if ( rs ) {
505
+ this.invalid[ checkElement.name ] = false;
506
+ } else {
507
+ this.invalid[ checkElement.name ] = true;
508
+ }
509
+
510
+ if ( !this.numberOfInvalids() ) {
511
+
512
+ // Hide error containers on last error
513
+ this.toHide = this.toHide.add( this.containers );
514
+ }
515
+ this.showErrors();
516
+
517
+ // Add aria-invalid status for screen readers
518
+ $( element ).attr( "aria-invalid", !rs );
519
+ }
520
+
521
+ return result;
522
+ },
523
+
524
+ // https://jqueryvalidation.org/Validator.showErrors/
525
+ showErrors: function( errors ) {
526
+ if ( errors ) {
527
+ var validator = this;
528
+
529
+ // Add items to error list and map
530
+ $.extend( this.errorMap, errors );
531
+ this.errorList = $.map( this.errorMap, function( message, name ) {
532
+ return {
533
+ message: message,
534
+ element: validator.findByName( name )[ 0 ]
535
+ };
536
+ } );
537
+
538
+ // Remove items from success list
539
+ this.successList = $.grep( this.successList, function( element ) {
540
+ return !( element.name in errors );
541
+ } );
542
+ }
543
+ if ( this.settings.showErrors ) {
544
+ this.settings.showErrors.call( this, this.errorMap, this.errorList );
545
+ } else {
546
+ this.defaultShowErrors();
547
+ }
548
+ },
549
+
550
+ // https://jqueryvalidation.org/Validator.resetForm/
551
+ resetForm: function() {
552
+ if ( $.fn.resetForm ) {
553
+ $( this.currentForm ).resetForm();
554
+ }
555
+ this.invalid = {};
556
+ this.submitted = {};
557
+ this.prepareForm();
558
+ this.hideErrors();
559
+ var elements = this.elements()
560
+ .removeData( "previousValue" )
561
+ .removeAttr( "aria-invalid" );
562
+
563
+ console.log( elements );
564
+
565
+ this.resetElements( elements );
566
+ },
567
+
568
+ resetElements: function( elements ) {
569
+ var i;
570
+
571
+ if ( this.settings.unhighlight ) {
572
+ for ( i = 0; elements[ i ]; i++ ) {
573
+ this.settings.unhighlight.call( this, elements[ i ],
574
+ this.settings.errorClass, "" );
575
+ this.findByName( elements[ i ].name ).removeClass( this.settings.validClass );
576
+ }
577
+ } else {
578
+ elements
579
+ .removeClass( this.settings.errorClass )
580
+ .removeClass( this.settings.validClass );
581
+ }
582
+ },
583
+
584
+ numberOfInvalids: function() {
585
+ return this.objectLength( this.invalid );
586
+ },
587
+
588
+ objectLength: function( obj ) {
589
+ /* jshint unused: false */
590
+ var count = 0,
591
+ i;
592
+ for ( i in obj ) {
593
+
594
+ // This check allows counting elements with empty error
595
+ // message as invalid elements
596
+ if ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {
597
+ count++;
598
+ }
599
+ }
600
+ return count;
601
+ },
602
+
603
+ hideErrors: function() {
604
+ this.hideThese( this.toHide );
605
+ },
606
+
607
+ hideThese: function( errors ) {
608
+ errors.not( this.containers ).text( "" );
609
+ this.addWrapper( errors ).hide();
610
+ },
611
+
612
+ valid: function() {
613
+ return this.size() === 0;
614
+ },
615
+
616
+ size: function() {
617
+ return this.errorList.length;
618
+ },
619
+
620
+ focusInvalid: function() {
621
+ if ( this.settings.focusInvalid ) {
622
+ try {
623
+ $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )
624
+ .filter( ":visible" )
625
+ .focus()
626
+
627
+ // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
628
+ .trigger( "focusin" );
629
+ } catch ( e ) {
630
+
631
+ // Ignore IE throwing errors when focusing hidden elements
632
+ }
633
+ }
634
+ },
635
+
636
+ findLastActive: function() {
637
+ var lastActive = this.lastActive;
638
+ return lastActive && $.grep( this.errorList, function( n ) {
639
+ return n.element.name === lastActive.name;
640
+ } ).length === 1 && lastActive;
641
+ },
642
+
643
+ elements: function() {
644
+ var validator = this,
645
+ rulesCache = {};
646
+
647
+ // Select all valid inputs inside the form (no submit or reset buttons)
648
+ return $( this.currentForm )
649
+ .find( "input, select, textarea, [contenteditable]" )
650
+ .not( ":submit, :reset, :image, :disabled" )
651
+ .not( this.settings.ignore )
652
+ .filter( function() {
653
+ var name = this.name || $( this ).attr( "name" ); // For contenteditable
654
+ var isContentEditable = typeof $( this ).attr( "contenteditable" ) !== "undefined" && $( this ).attr( "contenteditable" ) !== "false";
655
+
656
+ if ( !name && validator.settings.debug && window.console ) {
657
+ console.error( "%o has no name assigned", this );
658
+ }
659
+
660
+ // Set form expando on contenteditable
661
+ if ( isContentEditable ) {
662
+ this.form = $( this ).closest( "form" )[ 0 ];
663
+ this.name = name;
664
+ }
665
+
666
+ // Ignore elements that belong to other/nested forms
667
+ if ( this.form !== validator.currentForm ) {
668
+ return false;
669
+ }
670
+
671
+ // Select only the first element for each name, and only those with rules specified
672
+ if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
673
+ return false;
674
+ }
675
+
676
+ rulesCache[ name ] = true;
677
+ return true;
678
+ } );
679
+ },
680
+
681
+ clean: function( selector ) {
682
+ return $( selector )[ 0 ];
683
+ },
684
+
685
+ errors: function() {
686
+ var errorClass = this.settings.errorClass.split( " " ).join( "." );
687
+ return $( this.settings.errorElement + "." + errorClass, this.errorContext );
688
+ },
689
+
690
+ resetInternals: function() {
691
+ this.successList = [];
692
+ this.errorList = [];
693
+ this.errorMap = {};
694
+ this.toShow = $( [] );
695
+ this.toHide = $( [] );
696
+ },
697
+
698
+ reset: function() {
699
+ this.resetInternals();
700
+ this.currentElements = $( [] );
701
+ },
702
+
703
+ prepareForm: function() {
704
+ this.reset();
705
+ this.toHide = this.errors().add( this.containers );
706
+ },
707
+
708
+ prepareElement: function( element ) {
709
+ this.reset();
710
+ this.toHide = this.errorsFor( element );
711
+ },
712
+
713
+ elementValue: function( element ) {
714
+ var $element = $( element ),
715
+ type = element.type,
716
+ isContentEditable = typeof $element.attr( "contenteditable" ) !== "undefined" && $element.attr( "contenteditable" ) !== "false",
717
+ val, idx;
718
+
719
+ if ( type === "radio" || type === "checkbox" ) {
720
+ return this.findByName( element.name ).filter( ":checked" ).val();
721
+ } else if ( type === "number" && typeof element.validity !== "undefined" ) {
722
+ return element.validity.badInput ? "NaN" : $element.val();
723
+ }
724
+
725
+ if ( isContentEditable ) {
726
+ val = $element.text();
727
+ } else {
728
+ val = $element.val();
729
+ }
730
+
731
+ if ( type === "file" ) {
732
+
733
+ // Modern browser (chrome & safari)
734
+ if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) {
735
+ return val.substr( 12 );
736
+ }
737
+
738
+ // Legacy browsers
739
+ // Unix-based path
740
+ idx = val.lastIndexOf( "/" );
741
+ if ( idx >= 0 ) {
742
+ return val.substr( idx + 1 );
743
+ }
744
+
745
+ // Windows-based path
746
+ idx = val.lastIndexOf( "\\" );
747
+ if ( idx >= 0 ) {
748
+ return val.substr( idx + 1 );
749
+ }
750
+
751
+ // Just the file name
752
+ return val;
753
+ }
754
+
755
+ if ( typeof val === "string" ) {
756
+ return val.replace( /\r/g, "" );
757
+ }
758
+ return val;
759
+ },
760
+
761
+ check: function( element ) {
762
+ element = this.validationTargetFor( this.clean( element ) );
763
+
764
+ var rules = $( element ).rules(),
765
+ rulesCount = $.map( rules, function( n, i ) {
766
+ return i;
767
+ } ).length,
768
+ dependencyMismatch = false,
769
+ val = this.elementValue( element ),
770
+ result, method, rule, normalizer;
771
+
772
+ // Prioritize the local normalizer defined for this element over the global one
773
+ // if the former exists, otherwise user the global one in case it exists.
774
+ if ( typeof rules.normalizer === "function" ) {
775
+ normalizer = rules.normalizer;
776
+ } else if ( typeof this.settings.normalizer === "function" ) {
777
+ normalizer = this.settings.normalizer;
778
+ }
779
+
780
+ // If normalizer is defined, then call it to retreive the changed value instead
781
+ // of using the real one.
782
+ // Note that `this` in the normalizer is `element`.
783
+ if ( normalizer ) {
784
+ val = normalizer.call( element, val );
785
+
786
+ // Delete the normalizer from rules to avoid treating it as a pre-defined method.
787
+ delete rules.normalizer;
788
+ }
789
+
790
+ for ( method in rules ) {
791
+ rule = { method: method, parameters: rules[ method ] };
792
+ try {
793
+ result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
794
+
795
+ // If a method indicates that the field is optional and therefore valid,
796
+ // don't mark it as valid when there are no other rules
797
+ if ( result === "dependency-mismatch" && rulesCount === 1 ) {
798
+ dependencyMismatch = true;
799
+ continue;
800
+ }
801
+ dependencyMismatch = false;
802
+
803
+ if ( result === "pending" ) {
804
+ this.toHide = this.toHide.not( this.errorsFor( element ) );
805
+ return;
806
+ }
807
+
808
+ if ( !result ) {
809
+ this.formatAndAdd( element, rule );
810
+ return false;
811
+ }
812
+ } catch ( e ) {
813
+ if ( this.settings.debug && window.console ) {
814
+ console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
815
+ }
816
+ if ( e instanceof TypeError ) {
817
+ e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
818
+ }
819
+
820
+ throw e;
821
+ }
822
+ }
823
+ if ( dependencyMismatch ) {
824
+ return;
825
+ }
826
+ if ( this.objectLength( rules ) ) {
827
+ this.successList.push( element );
828
+ }
829
+ return true;
830
+ },
831
+
832
+ // Return the custom message for the given element and validation method
833
+ // specified in the element's HTML5 data attribute
834
+ // return the generic message if present and no method specific message is present
835
+ customDataMessage: function( element, method ) {
836
+ return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() +
837
+ method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
838
+ },
839
+
840
+ // Return the custom message for the given element name and validation method
841
+ customMessage: function( name, method ) {
842
+ var m = this.settings.messages[ name ];
843
+ return m && ( m.constructor === String ? m : m[ method ] );
844
+ },
845
+
846
+ // Return the first defined argument, allowing empty strings
847
+ findDefined: function() {
848
+ for ( var i = 0; i < arguments.length; i++ ) {
849
+ if ( arguments[ i ] !== undefined ) {
850
+ return arguments[ i ];
851
+ }
852
+ }
853
+ return undefined;
854
+ },
855
+
856
+ // The second parameter 'rule' used to be a string, and extended to an object literal
857
+ // of the following form:
858
+ // rule = {
859
+ // method: "method name",
860
+ // parameters: "the given method parameters"
861
+ // }
862
+ //
863
+ // The old behavior still supported, kept to maintain backward compatibility with
864
+ // old code, and will be removed in the next major release.
865
+ defaultMessage: function( element, rule ) {
866
+ if ( typeof rule === "string" ) {
867
+ rule = { method: rule };
868
+ }
869
+
870
+ var message = this.findDefined(
871
+ this.customMessage( element.name, rule.method ),
872
+ this.customDataMessage( element, rule.method ),
873
+
874
+ // 'title' is never undefined, so handle empty string as undefined
875
+ !this.settings.ignoreTitle && element.title || undefined,
876
+ $.validator.messages[ rule.method ],
877
+ "<strong>Warning: No message defined for " + element.name + "</strong>"
878
+ ),
879
+ theregex = /\$?\{(\d+)\}/g;
880
+ if ( typeof message === "function" ) {
881
+ message = message.call( this, rule.parameters, element );
882
+ } else if ( theregex.test( message ) ) {
883
+ message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
884
+ }
885
+
886
+ return message;
887
+ },
888
+
889
+ formatAndAdd: function( element, rule ) {
890
+ var message = this.defaultMessage( element, rule );
891
+
892
+ this.errorList.push( {
893
+ message: message,
894
+ element: element,
895
+ method: rule.method
896
+ } );
897
+
898
+ this.errorMap[ element.name ] = message;
899
+ this.submitted[ element.name ] = message;
900
+ },
901
+
902
+ addWrapper: function( toToggle ) {
903
+ if ( this.settings.wrapper ) {
904
+ toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
905
+ }
906
+ return toToggle;
907
+ },
908
+
909
+ defaultShowErrors: function() {
910
+ var i, elements, error;
911
+ for ( i = 0; this.errorList[ i ]; i++ ) {
912
+ error = this.errorList[ i ];
913
+ if ( this.settings.highlight ) {
914
+ this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
915
+ }
916
+ this.showLabel( error.element, error.message );
917
+ }
918
+ if ( this.errorList.length ) {
919
+ this.toShow = this.toShow.add( this.containers );
920
+ }
921
+ if ( this.settings.success ) {
922
+ for ( i = 0; this.successList[ i ]; i++ ) {
923
+ this.showLabel( this.successList[ i ] );
924
+ }
925
+ }
926
+ if ( this.settings.unhighlight ) {
927
+ for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {
928
+ this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );
929
+ }
930
+ }
931
+ this.toHide = this.toHide.not( this.toShow );
932
+ this.hideErrors();
933
+ this.addWrapper( this.toShow ).show();
934
+ },
935
+
936
+ validElements: function() {
937
+ return this.currentElements.not( this.invalidElements() );
938
+ },
939
+
940
+ invalidElements: function() {
941
+ return $( this.errorList ).map( function() {
942
+ return this.element;
943
+ } );
944
+ },
945
+
946
+ showLabel: function( element, message ) {
947
+ var place, group, errorID, v,
948
+ error = this.errorsFor( element ),
949
+ elementID = this.idOrName( element ),
950
+ describedBy = $( element ).attr( "aria-describedby" );
951
+
952
+ if ( error.length ) {
953
+
954
+ // Refresh error/success class
955
+ error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
956
+
957
+ // Replace message on existing label
958
+ error.html( message );
959
+ } else {
960
+
961
+ // Create error element
962
+ error = $( "<" + this.settings.errorElement + ">" )
963
+ .attr( "id", elementID + "-error" )
964
+ .addClass( this.settings.errorClass )
965
+ .html( message || "" );
966
+
967
+ // Maintain reference to the element to be placed into the DOM
968
+ place = error;
969
+ if ( this.settings.wrapper ) {
970
+
971
+ // Make sure the element is visible, even in IE
972
+ // actually showing the wrapped element is handled elsewhere
973
+ place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
974
+ }
975
+ if ( this.labelContainer.length ) {
976
+ this.labelContainer.append( place );
977
+ } else if ( this.settings.errorPlacement ) {
978
+ this.settings.errorPlacement.call( this, place, $( element ) );
979
+ } else {
980
+ place.insertAfter( element );
981
+ }
982
+
983
+ // Link error back to the element
984
+ if ( error.is( "label" ) ) {
985
+
986
+ // If the error is a label, then associate using 'for'
987
+ error.attr( "for", elementID );
988
+
989
+ // If the element is not a child of an associated label, then it's necessary
990
+ // to explicitly apply aria-describedby
991
+ } else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) {
992
+ errorID = error.attr( "id" );
993
+
994
+ // Respect existing non-error aria-describedby
995
+ if ( !describedBy ) {
996
+ describedBy = errorID;
997
+ } else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) {
998
+
999
+ // Add to end of list if not already present
1000
+ describedBy += " " + errorID;
1001
+ }
1002
+ $( element ).attr( "aria-describedby", describedBy );
1003
+
1004
+ // If this element is grouped, then assign to all elements in the same group
1005
+ group = this.groups[ element.name ];
1006
+ if ( group ) {
1007
+ v = this;
1008
+ $.each( v.groups, function( name, testgroup ) {
1009
+ if ( testgroup === group ) {
1010
+ $( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm )
1011
+ .attr( "aria-describedby", error.attr( "id" ) );
1012
+ }
1013
+ } );
1014
+ }
1015
+ }
1016
+ }
1017
+ if ( !message && this.settings.success ) {
1018
+ error.text( "" );
1019
+ if ( typeof this.settings.success === "string" ) {
1020
+ error.addClass( this.settings.success );
1021
+ } else {
1022
+ this.settings.success( error, element );
1023
+ }
1024
+ }
1025
+ this.toShow = this.toShow.add( error );
1026
+ },
1027
+
1028
+ errorsFor: function( element ) {
1029
+ var name = this.escapeCssMeta( this.idOrName( element ) ),
1030
+ describer = $( element ).attr( "aria-describedby" ),
1031
+ selector = "label[for='" + name + "'], label[for='" + name + "'] *";
1032
+
1033
+ // 'aria-describedby' should directly reference the error element
1034
+ if ( describer ) {
1035
+ selector = selector + ", #" + this.escapeCssMeta( describer )
1036
+ .replace( /\s+/g, ", #" );
1037
+ }
1038
+
1039
+ return this
1040
+ .errors()
1041
+ .filter( selector );
1042
+ },
1043
+
1044
+ // See https://api.jquery.com/category/selectors/, for CSS
1045
+ // meta-characters that should be escaped in order to be used with JQuery
1046
+ // as a literal part of a name/id or any selector.
1047
+ escapeCssMeta: function( string ) {
1048
+ return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" );
1049
+ },
1050
+
1051
+ idOrName: function( element ) {
1052
+ return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
1053
+ },
1054
+
1055
+ validationTargetFor: function( element ) {
1056
+
1057
+ // If radio/checkbox, validate first element in group instead
1058
+ if ( this.checkable( element ) ) {
1059
+ element = this.findByName( element.name );
1060
+ }
1061
+
1062
+ // Always apply ignore filter
1063
+ return $( element ).not( this.settings.ignore )[ 0 ];
1064
+ },
1065
+
1066
+ checkable: function( element ) {
1067
+ return ( /radio|checkbox/i ).test( element.type );
1068
+ },
1069
+
1070
+ findByName: function( name ) {
1071
+ return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" );
1072
+ },
1073
+
1074
+ getLength: function( value, element ) {
1075
+ switch ( element.nodeName.toLowerCase() ) {
1076
+ case "select":
1077
+ return $( "option:selected", element ).length;
1078
+ case "input":
1079
+ if ( this.checkable( element ) ) {
1080
+ return this.findByName( element.name ).filter( ":checked" ).length;
1081
+ }
1082
+ }
1083
+ return value.length;
1084
+ },
1085
+
1086
+ depend: function( param, element ) {
1087
+ return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;
1088
+ },
1089
+
1090
+ dependTypes: {
1091
+ "boolean": function( param ) {
1092
+ return param;
1093
+ },
1094
+ "string": function( param, element ) {
1095
+ return !!$( param, element.form ).length;
1096
+ },
1097
+ "function": function( param, element ) {
1098
+ return param( element );
1099
+ }
1100
+ },
1101
+
1102
+ optional: function( element ) {
1103
+ var val = this.elementValue( element );
1104
+ return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
1105
+ },
1106
+
1107
+ startRequest: function( element ) {
1108
+ if ( !this.pending[ element.name ] ) {
1109
+ this.pendingRequest++;
1110
+ $( element ).addClass( this.settings.pendingClass );
1111
+ this.pending[ element.name ] = true;
1112
+ }
1113
+ },
1114
+
1115
+ stopRequest: function( element, valid ) {
1116
+ this.pendingRequest--;
1117
+
1118
+ // Sometimes synchronization fails, make sure pendingRequest is never < 0
1119
+ if ( this.pendingRequest < 0 ) {
1120
+ this.pendingRequest = 0;
1121
+ }
1122
+ delete this.pending[ element.name ];
1123
+ $( element ).removeClass( this.settings.pendingClass );
1124
+ if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
1125
+ $( this.currentForm ).submit();
1126
+
1127
+ // Remove the hidden input that was used as a replacement for the
1128
+ // missing submit button. The hidden input is added by `handle()`
1129
+ // to ensure that the value of the used submit button is passed on
1130
+ // for scripted submits triggered by this method
1131
+ if ( this.submitButton ) {
1132
+ $( "input:hidden[name='" + this.submitButton.name + "']", this.currentForm ).remove();
1133
+ }
1134
+
1135
+ this.formSubmitted = false;
1136
+ } else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {
1137
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
1138
+ this.formSubmitted = false;
1139
+ }
1140
+ },
1141
+
1142
+ previousValue: function( element, method ) {
1143
+ method = typeof method === "string" && method || "remote";
1144
+
1145
+ return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
1146
+ old: null,
1147
+ valid: true,
1148
+ message: this.defaultMessage( element, { method: method } )
1149
+ } );
1150
+ },
1151
+
1152
+ // Cleans up all forms and elements, removes validator-specific events
1153
+ destroy: function() {
1154
+ this.resetForm();
1155
+
1156
+ $( this.currentForm )
1157
+ .off( ".validate" )
1158
+ .removeData( "validator" )
1159
+ .find( ".validate-equalTo-blur" )
1160
+ .off( ".validate-equalTo" )
1161
+ .removeClass( "validate-equalTo-blur" )
1162
+ .find( ".validate-lessThan-blur" )
1163
+ .off( ".validate-lessThan" )
1164
+ .removeClass( "validate-lessThan-blur" )
1165
+ .find( ".validate-lessThanEqual-blur" )
1166
+ .off( ".validate-lessThanEqual" )
1167
+ .removeClass( "validate-lessThanEqual-blur" )
1168
+ .find( ".validate-greaterThanEqual-blur" )
1169
+ .off( ".validate-greaterThanEqual" )
1170
+ .removeClass( "validate-greaterThanEqual-blur" )
1171
+ .find( ".validate-greaterThan-blur" )
1172
+ .off( ".validate-greaterThan" )
1173
+ .removeClass( "validate-greaterThan-blur" );
1174
+ }
1175
+
1176
+ },
1177
+
1178
+ classRuleSettings: {
1179
+ required: { required: true },
1180
+ email: { email: true },
1181
+ url: { url: true },
1182
+ date: { date: true },
1183
+ dateISO: { dateISO: true },
1184
+ number: { number: true },
1185
+ digits: { digits: true },
1186
+ creditcard: { creditcard: true }
1187
+ },
1188
+
1189
+ addClassRules: function( className, rules ) {
1190
+ if ( className.constructor === String ) {
1191
+ this.classRuleSettings[ className ] = rules;
1192
+ } else {
1193
+ $.extend( this.classRuleSettings, className );
1194
+ }
1195
+ },
1196
+
1197
+ classRules: function( element ) {
1198
+ var rules = {},
1199
+ classes = $( element ).attr( "class" );
1200
+
1201
+ if ( classes ) {
1202
+ $.each( classes.split( " " ), function() {
1203
+ if ( this in $.validator.classRuleSettings ) {
1204
+ $.extend( rules, $.validator.classRuleSettings[ this ] );
1205
+ }
1206
+ } );
1207
+ }
1208
+ return rules;
1209
+ },
1210
+
1211
+ normalizeAttributeRule: function( rules, type, method, value ) {
1212
+
1213
+ // Convert the value to a number for number inputs, and for text for backwards compability
1214
+ // allows type="date" and others to be compared as strings
1215
+ if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
1216
+ value = Number( value );
1217
+
1218
+ // Support Opera Mini, which returns NaN for undefined minlength
1219
+ if ( isNaN( value ) ) {
1220
+ value = undefined;
1221
+ }
1222
+ }
1223
+
1224
+ if ( value || value === 0 ) {
1225
+ rules[ method ] = value;
1226
+ } else if ( type === method && type !== "range" ) {
1227
+
1228
+ // Exception: the jquery validate 'range' method
1229
+ // does not test for the html5 'range' type
1230
+ rules[ method ] = true;
1231
+ }
1232
+ },
1233
+
1234
+ attributeRules: function( element ) {
1235
+ var rules = {},
1236
+ $element = $( element ),
1237
+ type = element.getAttribute( "type" ),
1238
+ method, value;
1239
+
1240
+ for ( method in $.validator.methods ) {
1241
+
1242
+ // Support for <input required> in both html5 and older browsers
1243
+ if ( method === "required" ) {
1244
+ value = element.getAttribute( method );
1245
+
1246
+ // Some browsers return an empty string for the required attribute
1247
+ // and non-HTML5 browsers might have required="" markup
1248
+ if ( value === "" ) {
1249
+ value = true;
1250
+ }
1251
+
1252
+ // Force non-HTML5 browsers to return bool
1253
+ value = !!value;
1254
+ } else {
1255
+ value = $element.attr( method );
1256
+ }
1257
+
1258
+ this.normalizeAttributeRule( rules, type, method, value );
1259
+ }
1260
+
1261
+ // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
1262
+ if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
1263
+ delete rules.maxlength;
1264
+ }
1265
+
1266
+ return rules;
1267
+ },
1268
+
1269
+ dataRules: function( element ) {
1270
+ var rules = {},
1271
+ $element = $( element ),
1272
+ type = element.getAttribute( "type" ),
1273
+ method, value;
1274
+
1275
+ for ( method in $.validator.methods ) {
1276
+ value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
1277
+
1278
+ // Cast empty attributes like `data-rule-required` to `true`
1279
+ if ( value === "" ) {
1280
+ value = true;
1281
+ }
1282
+
1283
+ this.normalizeAttributeRule( rules, type, method, value );
1284
+ }
1285
+ return rules;
1286
+ },
1287
+
1288
+ staticRules: function( element ) {
1289
+ var rules = {},
1290
+ validator = $.data( element.form, "validator" );
1291
+
1292
+ if ( validator.settings.rules ) {
1293
+ rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};
1294
+ }
1295
+ return rules;
1296
+ },
1297
+
1298
+ normalizeRules: function( rules, element ) {
1299
+
1300
+ // Handle dependency check
1301
+ $.each( rules, function( prop, val ) {
1302
+
1303
+ // Ignore rule when param is explicitly false, eg. required:false
1304
+ if ( val === false ) {
1305
+ delete rules[ prop ];
1306
+ return;
1307
+ }
1308
+ if ( val.param || val.depends ) {
1309
+ var keepRule = true;
1310
+ switch ( typeof val.depends ) {
1311
+ case "string":
1312
+ keepRule = !!$( val.depends, element.form ).length;
1313
+ break;
1314
+ case "function":
1315
+ keepRule = val.depends.call( element, element );
1316
+ break;
1317
+ }
1318
+ if ( keepRule ) {
1319
+ rules[ prop ] = val.param !== undefined ? val.param : true;
1320
+ } else {
1321
+ $.data( element.form, "validator" ).resetElements( $( element ) );
1322
+ delete rules[ prop ];
1323
+ }
1324
+ }
1325
+ } );
1326
+
1327
+ // Evaluate parameters
1328
+ $.each( rules, function( rule, parameter ) {
1329
+ rules[ rule ] = $.isFunction( parameter ) && rule !== "normalizer" ? parameter( element ) : parameter;
1330
+ } );
1331
+
1332
+ // Clean number parameters
1333
+ $.each( [ "minlength", "maxlength" ], function() {
1334
+ if ( rules[ this ] ) {
1335
+ rules[ this ] = Number( rules[ this ] );
1336
+ }
1337
+ } );
1338
+ $.each( [ "rangelength", "range" ], function() {
1339
+ var parts;
1340
+ if ( rules[ this ] ) {
1341
+ if ( $.isArray( rules[ this ] ) ) {
1342
+ rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];
1343
+ } else if ( typeof rules[ this ] === "string" ) {
1344
+ parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ );
1345
+ rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];
1346
+ }
1347
+ }
1348
+ } );
1349
+
1350
+ if ( $.validator.autoCreateRanges ) {
1351
+
1352
+ // Auto-create ranges
1353
+ if ( rules.min != null && rules.max != null ) {
1354
+ rules.range = [ rules.min, rules.max ];
1355
+ delete rules.min;
1356
+ delete rules.max;
1357
+ }
1358
+ if ( rules.minlength != null && rules.maxlength != null ) {
1359
+ rules.rangelength = [ rules.minlength, rules.maxlength ];
1360
+ delete rules.minlength;
1361
+ delete rules.maxlength;
1362
+ }
1363
+ }
1364
+
1365
+ return rules;
1366
+ },
1367
+
1368
+ // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
1369
+ normalizeRule: function( data ) {
1370
+ if ( typeof data === "string" ) {
1371
+ var transformed = {};
1372
+ $.each( data.split( /\s/ ), function() {
1373
+ transformed[ this ] = true;
1374
+ } );
1375
+ data = transformed;
1376
+ }
1377
+ return data;
1378
+ },
1379
+
1380
+ // https://jqueryvalidation.org/jQuery.validator.addMethod/
1381
+ addMethod: function( name, method, message ) {
1382
+ $.validator.methods[ name ] = method;
1383
+ $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
1384
+ if ( method.length < 3 ) {
1385
+ $.validator.addClassRules( name, $.validator.normalizeRule( name ) );
1386
+ }
1387
+ },
1388
+
1389
+ // https://jqueryvalidation.org/jQuery.validator.methods/
1390
+ methods: {
1391
+
1392
+ // https://jqueryvalidation.org/required-method/
1393
+ required: function( value, element, param ) {
1394
+
1395
+ // Check if dependency is met
1396
+ if ( !this.depend( param, element ) ) {
1397
+ return "dependency-mismatch";
1398
+ }
1399
+ if ( element.nodeName.toLowerCase() === "select" ) {
1400
+
1401
+ // Could be an array for select-multiple or a string, both are fine this way
1402
+ var val = $( element ).val();
1403
+ return val && val.length > 0;
1404
+ }
1405
+ if ( this.checkable( element ) ) {
1406
+ return this.getLength( value, element ) > 0;
1407
+ }
1408
+ return value !== undefined && value !== null && value.length > 0;
1409
+ },
1410
+
1411
+ // https://jqueryvalidation.org/email-method/
1412
+ email: function( value, element ) {
1413
+
1414
+ // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
1415
+ // Retrieved 2014-01-14
1416
+ // If you have a problem with this implementation, report a bug against the above spec
1417
+ // Or use custom methods to implement your own email validation
1418
+ return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
1419
+ },
1420
+
1421
+ // https://jqueryvalidation.org/url-method/
1422
+ url: function( value, element ) {
1423
+
1424
+ // Copyright (c) 2010-2013 Diego Perini, MIT licensed
1425
+ // https://gist.github.com/dperini/729294
1426
+ // see also https://mathiasbynens.be/demo/url-regex
1427
+ // modified to allow protocol-relative URLs
1428
+ return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
1429
+ },
1430
+
1431
+ // https://jqueryvalidation.org/date-method/
1432
+ date: ( function() {
1433
+ var called = false;
1434
+
1435
+ return function( value, element ) {
1436
+ if ( !called ) {
1437
+ called = true;
1438
+ if ( this.settings.debug && window.console ) {
1439
+ console.warn(
1440
+ "The `date` method is deprecated and will be removed in version '2.0.0'.\n" +
1441
+ "Please don't use it, since it relies on the Date constructor, which\n" +
1442
+ "behaves very differently across browsers and locales. Use `dateISO`\n" +
1443
+ "instead or one of the locale specific methods in `localizations/`\n" +
1444
+ "and `additional-methods.js`."
1445
+ );
1446
+ }
1447
+ }
1448
+
1449
+ return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
1450
+ };
1451
+ }() ),
1452
+
1453
+ // https://jqueryvalidation.org/dateISO-method/
1454
+ dateISO: function( value, element ) {
1455
+ return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
1456
+ },
1457
+
1458
+ // https://jqueryvalidation.org/number-method/
1459
+ number: function( value, element ) {
1460
+ return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
1461
+ },
1462
+
1463
+ // https://jqueryvalidation.org/digits-method/
1464
+ digits: function( value, element ) {
1465
+ return this.optional( element ) || /^\d+$/.test( value );
1466
+ },
1467
+
1468
+ // https://jqueryvalidation.org/minlength-method/
1469
+ minlength: function( value, element, param ) {
1470
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1471
+ return this.optional( element ) || length >= param;
1472
+ },
1473
+
1474
+ // https://jqueryvalidation.org/maxlength-method/
1475
+ maxlength: function( value, element, param ) {
1476
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1477
+ return this.optional( element ) || length <= param;
1478
+ },
1479
+
1480
+ // https://jqueryvalidation.org/rangelength-method/
1481
+ rangelength: function( value, element, param ) {
1482
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1483
+ return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
1484
+ },
1485
+
1486
+ // https://jqueryvalidation.org/min-method/
1487
+ min: function( value, element, param ) {
1488
+ return this.optional( element ) || value >= param;
1489
+ },
1490
+
1491
+ // https://jqueryvalidation.org/max-method/
1492
+ max: function( value, element, param ) {
1493
+ return this.optional( element ) || value <= param;
1494
+ },
1495
+
1496
+ // https://jqueryvalidation.org/range-method/
1497
+ range: function( value, element, param ) {
1498
+ return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
1499
+ },
1500
+
1501
+ // https://jqueryvalidation.org/step-method/
1502
+ step: function( value, element, param ) {
1503
+ var type = $( element ).attr( "type" ),
1504
+ errorMessage = "Step attribute on input type " + type + " is not supported.",
1505
+ supportedTypes = [ "text", "number", "range" ],
1506
+ re = new RegExp( "\\b" + type + "\\b" ),
1507
+ notSupported = type && !re.test( supportedTypes.join() ),
1508
+ decimalPlaces = function( num ) {
1509
+ var match = ( "" + num ).match( /(?:\.(\d+))?$/ );
1510
+ if ( !match ) {
1511
+ return 0;
1512
+ }
1513
+
1514
+ // Number of digits right of decimal point.
1515
+ return match[ 1 ] ? match[ 1 ].length : 0;
1516
+ },
1517
+ toInt = function( num ) {
1518
+ return Math.round( num * Math.pow( 10, decimals ) );
1519
+ },
1520
+ valid = true,
1521
+ decimals;
1522
+
1523
+ // Works only for text, number and range input types
1524
+ // TODO find a way to support input types date, datetime, datetime-local, month, time and week
1525
+ if ( notSupported ) {
1526
+ throw new Error( errorMessage );
1527
+ }
1528
+
1529
+ decimals = decimalPlaces( param );
1530
+
1531
+ // Value can't have too many decimals
1532
+ if ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {
1533
+ valid = false;
1534
+ }
1535
+
1536
+ return this.optional( element ) || valid;
1537
+ },
1538
+
1539
+ // https://jqueryvalidation.org/equalTo-method/
1540
+ equalTo: function( value, element, param ) {
1541
+
1542
+ // Bind to the blur event of the target in order to revalidate whenever the target field is updated
1543
+ var target = $( param );
1544
+ if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) {
1545
+ target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() {
1546
+ $( element ).valid();
1547
+ } );
1548
+ }
1549
+ return value === target.val();
1550
+ },
1551
+
1552
+ // https://jqueryvalidation.org/remote-method/
1553
+ remote: function( value, element, param, method ) {
1554
+ if ( this.optional( element ) ) {
1555
+ return "dependency-mismatch";
1556
+ }
1557
+
1558
+ method = typeof method === "string" && method || "remote";
1559
+
1560
+ var previous = this.previousValue( element, method ),
1561
+ validator, data, optionDataString;
1562
+
1563
+ if ( !this.settings.messages[ element.name ] ) {
1564
+ this.settings.messages[ element.name ] = {};
1565
+ }
1566
+ previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
1567
+ this.settings.messages[ element.name ][ method ] = previous.message;
1568
+
1569
+ param = typeof param === "string" && { url: param } || param;
1570
+ optionDataString = $.param( $.extend( { data: value }, param.data ) );
1571
+ if ( previous.old === optionDataString ) {
1572
+ return previous.valid;
1573
+ }
1574
+
1575
+ previous.old = optionDataString;
1576
+ validator = this;
1577
+ this.startRequest( element );
1578
+ data = {};
1579
+ data[ element.name ] = value;
1580
+ $.ajax( $.extend( true, {
1581
+ mode: "abort",
1582
+ port: "validate" + element.name,
1583
+ dataType: "json",
1584
+ data: data,
1585
+ context: validator.currentForm,
1586
+ success: function( response ) {
1587
+ var valid = response === true || response === "true",
1588
+ errors, message, submitted;
1589
+
1590
+ validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
1591
+ if ( valid ) {
1592
+ submitted = validator.formSubmitted;
1593
+ validator.resetInternals();
1594
+ validator.toHide = validator.errorsFor( element );
1595
+ validator.formSubmitted = submitted;
1596
+ validator.successList.push( element );
1597
+ validator.invalid[ element.name ] = false;
1598
+ validator.showErrors();
1599
+ } else {
1600
+ errors = {};
1601
+ message = response || validator.defaultMessage( element, { method: method, parameters: value } );
1602
+ errors[ element.name ] = previous.message = message;
1603
+ validator.invalid[ element.name ] = true;
1604
+ validator.showErrors( errors );
1605
+ }
1606
+ previous.valid = valid;
1607
+ validator.stopRequest( element, valid );
1608
+ }
1609
+ }, param ) );
1610
+ return "pending";
1611
+ }
1612
+ }
1613
+
1614
+ } );
1615
+
1616
+ // Ajax mode: abort
1617
+ // usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1618
+ // if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
1619
+
1620
+ var pendingRequests = {},
1621
+ ajax;
1622
+
1623
+ // Use a prefilter if available (1.5+)
1624
+ if ( $.ajaxPrefilter ) {
1625
+ $.ajaxPrefilter( function( settings, _, xhr ) {
1626
+ var port = settings.port;
1627
+ if ( settings.mode === "abort" ) {
1628
+ if ( pendingRequests[ port ] ) {
1629
+ pendingRequests[ port ].abort();
1630
+ }
1631
+ pendingRequests[ port ] = xhr;
1632
+ }
1633
+ } );
1634
+ } else {
1635
+
1636
+ // Proxy ajax
1637
+ ajax = $.ajax;
1638
+ $.ajax = function( settings ) {
1639
+ var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
1640
+ port = ( "port" in settings ? settings : $.ajaxSettings ).port;
1641
+ if ( mode === "abort" ) {
1642
+ if ( pendingRequests[ port ] ) {
1643
+ pendingRequests[ port ].abort();
1644
+ }
1645
+ pendingRequests[ port ] = ajax.apply( this, arguments );
1646
+ return pendingRequests[ port ];
1647
+ }
1648
+ return ajax.apply( this, arguments );
1649
+ };
1650
+ }
1651
+ return $;
1652
+ }));
assets/js/wpforms.js CHANGED
@@ -1,10 +1,10 @@
1
- /* global wpforms_settings,grecaptcha,wpforms_validate,wpforms_timepicker */
2
 
3
- ;(function($) {
4
 
5
- 'use strict';
6
 
7
- var WPForms = {
8
 
9
  /**
10
  * Start the engine.
@@ -13,14 +13,14 @@
13
  */
14
  init: function() {
15
 
16
- // Document ready
17
- $( document ).ready( WPForms.ready );
18
 
19
- // Page load
20
- $( window ).on( 'load', WPForms.load );
21
 
22
- WPForms.bindUIActions();
23
- WPForms.bindOptinMonster();
24
  },
25
 
26
  /**
@@ -31,17 +31,18 @@
31
  ready: function() {
32
 
33
  // Clear URL - remove wpforms_form_id.
34
- WPForms.clearUrlQuery();
35
 
36
- // Set user identifier
37
- WPForms.setUserIndentifier();
38
 
39
- WPForms.loadValidation();
40
- WPForms.loadDatePicker();
41
- WPForms.loadTimePicker();
42
- WPForms.loadInputMask();
43
- WPForms.loadSmartPhoneField();
44
- WPForms.loadPayments();
 
45
 
46
  // Randomize elements.
47
  $( '.wpforms-randomize' ).each( function() {
@@ -116,9 +117,9 @@
116
  } );
117
 
118
  $.validator.messages.required = wpforms_settings.val_required;
119
- $.validator.messages.url = wpforms_settings.val_url;
120
- $.validator.messages.email = wpforms_settings.val_email;
121
- $.validator.messages.number = wpforms_settings.val_number;
122
 
123
  // Payments: Validate method for Credit Card Number.
124
  if ( typeof $.fn.payment !== 'undefined' ) {
@@ -171,7 +172,7 @@
171
 
172
  // Validate required payments.
173
  $.validator.addMethod( 'required-payment', function( value, element ) {
174
- return WPForms.amountSanitize( value ) > 0;
175
  }, wpforms_settings.val_requiredpayment );
176
 
177
  // Validate 12-hour time.
@@ -269,27 +270,27 @@
269
  },
270
  submitHandler: function( form ) {
271
 
272
- var $form = $( form ),
273
- $submit = $form.find( '.wpforms-submit' ),
274
- altText = $submit.data( 'alt-text' );
 
275
 
276
- if ( WPForms.empty( $submit.get( 0 ).recaptchaID ) && $submit.get( 0 ).recaptchaID !== 0 ) {
277
 
278
- // Normal form.
279
- if ( altText ) {
280
- $submit.text( altText ).prop( 'disabled', true );
281
- }
282
-
283
- // Remove name attributes if needed.
284
- $( '.wpforms-input-temp-name' ).removeAttr( 'name' );
285
 
286
- form.submit();
 
 
 
287
 
288
- } else {
 
289
 
290
- // Form contains invisible reCAPTCHA.
291
- grecaptcha.execute( $submit.get( 0 ).recaptchaID );
292
- }
293
  },
294
  onkeyup: function( element, event ) {
295
 
@@ -453,7 +454,7 @@
453
 
454
  // Determine the country by IP if no GDPR restrictions enabled.
455
  if ( ! wpforms_settings.gdpr ) {
456
- inputOptions.geoIpLookup = WPForms.currentIpToCountry;
457
  }
458
 
459
  // Try to kick in an alternative solution if GDPR restrictions are enabled.
@@ -503,18 +504,71 @@
503
  */
504
  loadPayments: function() {
505
 
506
- // Update Total field(s) with latest calculation
507
  $( '.wpforms-payment-total' ).each( function( index, el ) {
508
- WPForms.amountTotal( this );
509
  } );
510
 
511
- // Credit card validation
512
  if ( typeof $.fn.payment !== 'undefined' ) {
513
  $( '.wpforms-field-credit-card-cardnumber' ).payment( 'formatCardNumber' );
514
  $( '.wpforms-field-credit-card-cardcvc' ).payment( 'formatCardCVC' );
515
  }
516
  },
517
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
518
  //--------------------------------------------------------------------//
519
  // Binds.
520
  //--------------------------------------------------------------------//
@@ -529,12 +583,12 @@
529
  // Pagebreak navigation.
530
  $( document ).on( 'click', '.wpforms-page-button', function( event ) {
531
  event.preventDefault();
532
- WPForms.pagebreakNav( $( this ) );
533
  } );
534
 
535
  // Payments: Update Total field(s) when latest calculation.
536
  $( document ).on( 'change input', '.wpforms-payment-price', function() {
537
- WPForms.amountTotal( this, true );
538
  } );
539
 
540
  // Payments: Restrict user input payment fields.
@@ -548,11 +602,16 @@
548
  $( document ).on( 'focusout', '.wpforms-payment-user-input', function() {
549
  var $this = $( this ),
550
  amount = $this.val(),
551
- sanitized = WPForms.amountSanitize( amount ),
552
- formatted = WPForms.amountFormat( sanitized );
553
  $this.val( formatted );
554
  } );
555
 
 
 
 
 
 
556
  // Payment radio/checkbox fields: preselect the selected payment (from dynamic/fallback population).
557
  $( document ).ready( function() {
558
 
@@ -593,7 +652,22 @@
593
  $( '.wpforms-field-rating-item input:checked' ).change();
594
  } );
595
 
596
- // Checkbox/Radio/Payment checkbox: toggle selected state class.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
597
  $( document ).on( 'change', '.wpforms-field-checkbox input, .wpforms-field-radio input, .wpforms-field-payment-multiple input, .wpforms-field-payment-checkbox input, .wpforms-field-gdpr-checkbox input', function( event ) {
598
 
599
  var $this = $( this ),
@@ -613,12 +687,12 @@
613
  break;
614
 
615
  case 'checkbox':
616
- if ( $this.prop( 'checked' ) ) {
617
  $this.closest( 'li' ).addClass( 'wpforms-selected' );
618
  $this.prop( 'checked', true );
619
  } else {
620
  $this.closest( 'li' ).removeClass( 'wpforms-selected' );
621
- $this.removeProp( 'checked' );
622
  }
623
  break;
624
  }
@@ -626,15 +700,15 @@
626
 
627
  // Upload fields: Check combined file size.
628
  $( document ).on( 'change', '.wpforms-field-file-upload input', function() {
629
- var $this = $( this ),
630
- $uploads = $this.closest( 'form.wpforms-form' ).find( '.wpforms-field-file-upload input' ),
631
- totalSize = 0,
632
- postMaxSize = Number( wpforms_settings.post_max_size ),
633
- errorMsg = '<div class="wpforms-error-container-post_max_size">' + wpforms_settings.val_post_max_size + '</div>',
634
- errorCntTpl = '<div class="wpforms-error-container">{errorMsg}</span></div>',
635
- $submitCnt = $this.closest( 'form.wpforms-form' ).find( '.wpforms-submit-container' ),
636
- $submitBtn = $submitCnt.find( 'button.wpforms-submit' ),
637
- $errorCnt = $submitCnt.prev();
638
 
639
  // Calculating totalSize.
640
  $uploads.each( function() {
@@ -675,30 +749,35 @@
675
 
676
  } );
677
 
678
- // Mailcheck suggestion.
679
- $( document ).on( 'blur', '.wpforms-field-email input', function() {
680
- var $t = $( this ),
681
- id = $t.attr( 'id' );
682
- $t.mailcheck( {
683
- suggested: function( el, suggestion ) {
684
- $( '#' + id + '_suggestion' ).remove();
685
- var sugg = '<a href="#" class="mailcheck-suggestion" data-id="' + id + '" title="' + wpforms_settings.val_email_suggestion_title + '">' + suggestion.full + '</a>';
686
- sugg = wpforms_settings.val_email_suggestion.replace( '{suggestion}', sugg );
687
- $( el ).after( '<label class="wpforms-error mailcheck-error" id="' + id + '_suggestion">' + sugg + '</label>' );
688
- },
689
- empty: function() {
690
- $( '#' + id + '_suggestion' ).remove();
691
- },
692
- } );
693
- } );
694
 
695
- // Apply Mailcheck suggestion.
696
- $( document ).on( 'click', '.wpforms-field-email .mailcheck-suggestion', function( e ) {
697
  var $t = $( this ),
698
- id = $t.attr( 'data-id' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
699
  e.preventDefault();
700
- $( '#' + id ).val( $t.text() );
701
- $t.parent().remove();
702
  } );
703
 
704
  },
@@ -707,6 +786,8 @@
707
  * Update Pagebreak navigation.
708
  *
709
  * @since 1.2.2
 
 
710
  */
711
  pagebreakNav: function( el ) {
712
 
@@ -729,7 +810,7 @@
729
  // TODO: cleanup this BC with wpform_pageScroll.
730
  if ( false === window.wpforms_pageScroll ) {
731
  pageScroll = false;
732
- } else if ( ! WPForms.empty( window.wpform_pageScroll ) ) {
733
  pageScroll = window.wpform_pageScroll;
734
  } else {
735
  pageScroll = 75;
@@ -749,11 +830,7 @@
749
  // Scroll to first/top error on page.
750
  var $topError = $page.find( '.wpforms-error' ).first();
751
  if ( $topError.length ) {
752
- $( 'html, body' ).animate( {
753
- scrollTop: $topError.offset().top - 75,
754
- }, 750, function() {
755
- $topError.focus();
756
- } );
757
  }
758
  }
759
 
@@ -770,9 +847,7 @@
770
  if ( pageScroll ) {
771
 
772
  // Scroll to top of the form.
773
- $( 'html, body' ).animate( {
774
- scrollTop: $form.offset().top - pageScroll,
775
- }, 1000 );
776
  }
777
  $this.trigger( 'wpformsPageChange', [ page2, $form ] );
778
  }
@@ -787,9 +862,7 @@
787
  if ( pageScroll ) {
788
 
789
  // Scroll to top of the form.
790
- $( 'html, body' ).animate( {
791
- scrollTop: $form.offset().top - pageScroll,
792
- }, 1000 );
793
  }
794
  $this.trigger( 'wpformsPageChange', [ page2, $form ] );
795
  }
@@ -836,14 +909,14 @@
836
 
837
  // OM v5.
838
  document.addEventListener( 'om.Campaign.load', function( event ) {
839
- WPForms.ready();
840
- WPForms.optinMonsterRecaptchaReset( event.detail.Campaign.data.id );
841
  } );
842
 
843
  // OM Legacy.
844
  $( document ).on( 'OptinMonsterOnShow', function( event, data, object ) {
845
- WPForms.ready();
846
- WPForms.optinMonsterRecaptchaReset( data.optin );
847
  } );
848
  },
849
 
@@ -889,18 +962,22 @@
889
  */
890
  amountTotal: function( el, validate ) {
891
 
892
- var validate = validate || false,
893
- $form = $( el ).closest( '.wpforms-form' ),
 
894
  total = 0,
895
- totalFormatted = 0,
896
- totalFormattedSymbol = 0,
897
- currency = WPForms.getCurrency();
898
 
899
  $( '.wpforms-payment-price', $form ).each( function( index, el ) {
900
 
901
  var amount = 0,
902
  $this = $( this );
903
 
 
 
 
904
  if ( 'text' === $this.attr( 'type' ) || 'hidden' === $this.attr( 'type' ) ) {
905
  amount = $this.val();
906
  } else if ( ( 'radio' === $this.attr( 'type' ) || 'checkbox' === $this.attr( 'type' ) ) && $this.is( ':checked' ) ) {
@@ -908,13 +985,13 @@
908
  } else if ( $this.is( 'select' ) && $this.find( 'option:selected' ).length > 0 ) {
909
  amount = $this.find( 'option:selected' ).data( 'amount' );
910
  }
911
- if ( ! WPForms.empty( amount ) ) {
912
- amount = WPForms.amountSanitize( amount );
913
  total = Number( total ) + Number( amount );
914
  }
915
  } );
916
 
917
- totalFormatted = WPForms.amountFormat( total );
918
 
919
  if ( 'left' === currency.symbol_pos ) {
920
  totalFormattedSymbol = currency.symbol + ' ' + totalFormatted;
@@ -941,7 +1018,7 @@
941
  */
942
  amountSanitize: function( amount ) {
943
 
944
- var currency = WPForms.getCurrency();
945
 
946
  amount = amount.toString().replace( /[^0-9.,]/g, '' );
947
 
@@ -956,7 +1033,7 @@
956
  amount = amount.replace( currency.thousands_sep, '' );
957
  }
958
 
959
- return WPForms.numberFormat( amount, 2, '.', '' );
960
  },
961
 
962
  /**
@@ -966,7 +1043,7 @@
966
  */
967
  amountFormat: function( amount ) {
968
 
969
- var currency = WPForms.getCurrency();
970
 
971
  amount = String( amount );
972
 
@@ -983,11 +1060,11 @@
983
  amount = amount.replace( ',', '' );
984
  }
985
 
986
- if ( WPForms.empty( amount ) ) {
987
  amount = 0;
988
  }
989
 
990
- return WPForms.numberFormat( amount, 2, currency.decimal_sep, currency.thousands_sep );
991
  },
992
 
993
  /**
@@ -1097,7 +1174,7 @@
1097
  */
1098
  setUserIndentifier: function() {
1099
 
1100
- if ( ( ( ! window.hasRequiredConsent && typeof wpforms_settings !== 'undefined' && wpforms_settings.uuid_cookie ) || ( window.hasRequiredConsent && window.hasRequiredConsent() ) ) && ! WPForms.getCookie( '_wpfuuid' ) ) {
1101
 
1102
  // Generate UUID - http://stackoverflow.com/a/873856/1489528
1103
  var s = new Array( 36 ),
@@ -1113,7 +1190,7 @@
1113
 
1114
  uuid = s.join( '' );
1115
 
1116
- WPForms.createCookie( '_wpfuuid', uuid, 3999 );
1117
  }
1118
  },
1119
 
@@ -1173,7 +1250,7 @@
1173
  */
1174
  removeCookie: function( name ) {
1175
 
1176
- WPForms.createCookie( name, '', -1 );
1177
  },
1178
 
1179
  /**
@@ -1227,19 +1304,323 @@
1227
  var countryCode = ( resp && resp.country ) ? resp.country : '';
1228
 
1229
  if ( ! countryCode ) {
1230
- var lang = WPForms.getFirstBrowserLanguage();
1231
  countryCode = lang.indexOf( '-' ) > -1 ? lang.split( '-' ).pop() : '';
1232
  }
1233
 
1234
  callback( countryCode );
1235
  } );
1236
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1237
  };
1238
 
1239
- // Initialize.
1240
- WPForms.init();
1241
 
1242
- // Add to global scope.
1243
- window.wpforms = WPForms;
1244
 
1245
- }( jQuery ) );
 
1
+ /* global wpforms_settings, grecaptcha, wpformsRecaptchaCallback, wpforms_validate, wpforms_datepicker, wpforms_timepicker, Mailcheck */
2
 
3
+ 'use strict';
4
 
5
+ var wpforms = window.wpforms || ( function( document, window, $ ) {
6
 
7
+ var app = {
8
 
9
  /**
10
  * Start the engine.
13
  */
14
  init: function() {
15
 
16
+ // Document ready.
17
+ $( document ).ready( app.ready );
18
 
19
+ // Page load.
20
+ $( window ).on( 'load', app.load );
21
 
22
+ app.bindUIActions();
23
+ app.bindOptinMonster();
24
  },
25
 
26
  /**
31
  ready: function() {
32
 
33
  // Clear URL - remove wpforms_form_id.
34
+ app.clearUrlQuery();
35
 
36
+ // Set user identifier.
37
+ app.setUserIndentifier();
38
 
39
+ app.loadValidation();
40
+ app.loadDatePicker();
41
+ app.loadTimePicker();
42
+ app.loadInputMask();
43
+ app.loadSmartPhoneField();
44
+ app.loadPayments();
45
+ app.loadMailcheck();
46
 
47
  // Randomize elements.
48
  $( '.wpforms-randomize' ).each( function() {
117
  } );
118
 
119
  $.validator.messages.required = wpforms_settings.val_required;
120
+ $.validator.messages.url = wpforms_settings.val_url;
121
+ $.validator.messages.email = wpforms_settings.val_email;
122
+ $.validator.messages.number = wpforms_settings.val_number;
123
 
124
  // Payments: Validate method for Credit Card Number.
125
  if ( typeof $.fn.payment !== 'undefined' ) {
172
 
173
  // Validate required payments.
174
  $.validator.addMethod( 'required-payment', function( value, element ) {
175
+ return app.amountSanitize( value ) > 0;
176
  }, wpforms_settings.val_requiredpayment );
177
 
178
  // Validate 12-hour time.
270
  },
271
  submitHandler: function( form ) {
272
 
273
+ var $form = $( form ),
274
+ $submit = $form.find( '.wpforms-submit' ),
275
+ altText = $submit.data( 'alt-text' ),
276
+ recaptchaID = $submit.get( 0 ).recaptchaID;
277
 
278
+ if ( ! app.empty( recaptchaID ) || recaptchaID === 0 ) {
279
 
280
+ // Form contains invisible reCAPTCHA.
281
+ grecaptcha.execute( recaptchaID );
282
+ return false;
283
+ }
 
 
 
284
 
285
+ // Normal form.
286
+ if ( altText ) {
287
+ $submit.text( altText ).prop( 'disabled', true );
288
+ }
289
 
290
+ // Remove name attributes if needed.
291
+ $( '.wpforms-input-temp-name' ).removeAttr( 'name' );
292
 
293
+ app.formSubmit( $form );
 
 
294
  },
295
  onkeyup: function( element, event ) {
296
 
454
 
455
  // Determine the country by IP if no GDPR restrictions enabled.
456
  if ( ! wpforms_settings.gdpr ) {
457
+ inputOptions.geoIpLookup = app.currentIpToCountry;
458
  }
459
 
460
  // Try to kick in an alternative solution if GDPR restrictions are enabled.
504
  */
505
  loadPayments: function() {
506
 
507
+ // Update Total field(s) with latest calculation.
508
  $( '.wpforms-payment-total' ).each( function( index, el ) {
509
+ app.amountTotal( this );
510
  } );
511
 
512
+ // Credit card validation.
513
  if ( typeof $.fn.payment !== 'undefined' ) {
514
  $( '.wpforms-field-credit-card-cardnumber' ).payment( 'formatCardNumber' );
515
  $( '.wpforms-field-credit-card-cardcvc' ).payment( 'formatCardCVC' );
516
  }
517
  },
518
 
519
+ /**
520
+ * Load mailcheck.
521
+ *
522
+ * @since 1.5.3
523
+ */
524
+ loadMailcheck: function() {
525
+
526
+ // Skip loading if `wpforms_mailcheck_enabled` filter return false.
527
+ if ( ! wpforms_settings.mailcheck_enabled ) {
528
+ return;
529
+ }
530
+
531
+ // Only load if library exists.
532
+ if ( typeof $.fn.mailcheck === 'undefined' ) {
533
+ return;
534
+ }
535
+
536
+ if ( wpforms_settings.mailcheck_domains.length > 0 ) {
537
+ Mailcheck.defaultDomains = Mailcheck.defaultDomains.concat( wpforms_settings.mailcheck_domains );
538
+ }
539
+ if ( wpforms_settings.mailcheck_toplevel_domains.length > 0 ) {
540
+ Mailcheck.defaultTopLevelDomains = Mailcheck.defaultTopLevelDomains.concat( wpforms_settings.mailcheck_toplevel_domains );
541
+ }
542
+
543
+ // Mailcheck suggestion.
544
+ $( document ).on( 'blur', '.wpforms-field-email input', function() {
545
+ var $t = $( this ),
546
+ id = $t.attr( 'id' );
547
+
548
+ $t.mailcheck( {
549
+ suggested: function( el, suggestion ) {
550
+ $( '#' + id + '_suggestion' ).remove();
551
+ var sugg = '<a href="#" class="mailcheck-suggestion" data-id="' + id + '" title="' + wpforms_settings.val_email_suggestion_title + '">' + suggestion.full + '</a>';
552
+ sugg = wpforms_settings.val_email_suggestion.replace( '{suggestion}', sugg );
553
+ $( el ).after( '<label class="wpforms-error mailcheck-error" id="' + id + '_suggestion">' + sugg + '</label>' );
554
+ },
555
+ empty: function() {
556
+ $( '#' + id + '_suggestion' ).remove();
557
+ },
558
+ } );
559
+ } );
560
+
561
+ // Apply Mailcheck suggestion.
562
+ $( document ).on( 'click', '.wpforms-field-email .mailcheck-suggestion', function( e ) {
563
+ var $t = $( this ),
564
+ id = $t.attr( 'data-id' );
565
+ e.preventDefault();
566
+ $( '#' + id ).val( $t.text() );
567
+ $t.parent().remove();
568
+ } );
569
+
570
+ },
571
+
572
  //--------------------------------------------------------------------//
573
  // Binds.
574
  //--------------------------------------------------------------------//
583
  // Pagebreak navigation.
584
  $( document ).on( 'click', '.wpforms-page-button', function( event ) {
585
  event.preventDefault();
586
+ app.pagebreakNav( $( this ) );
587
  } );
588
 
589
  // Payments: Update Total field(s) when latest calculation.
590
  $( document ).on( 'change input', '.wpforms-payment-price', function() {
591
+ app.amountTotal( this, true );
592
  } );
593
 
594
  // Payments: Restrict user input payment fields.
602
  $( document ).on( 'focusout', '.wpforms-payment-user-input', function() {
603
  var $this = $( this ),
604
  amount = $this.val(),
605
+ sanitized = app.amountSanitize( amount ),
606
+ formatted = app.amountFormat( sanitized );
607
  $this.val( formatted );
608
  } );
609
 
610
+ // Payments: Update Total field(s) when conditials are processed.
611
+ $( document ).on( 'wpformsProcessConditionals', function( e, el ) {
612
+ app.amountTotal( el, true );
613
+ } );
614
+
615
  // Payment radio/checkbox fields: preselect the selected payment (from dynamic/fallback population).
616
  $( document ).ready( function() {
617
 
652
  $( '.wpforms-field-rating-item input:checked' ).change();
653
  } );
654
 
655
+ // Checkbox/Radio/Payment checkbox: make labels keyboard-accessible.
656
+ $( document ).on( 'keypress', '.wpforms-image-choices-item label', function( event ) {
657
+ var $this = $( this ),
658
+ $field = $this.closest( '.wpforms-field' );
659
+
660
+ if ( $field.hasClass( 'wpforms-conditional-hide' ) ) {
661
+ event.preventDefault();
662
+ return false;
663
+ }
664
+
665
+ // Cause the input to be clicked when clicking the label.
666
+ if ( 13 === event.which ) {
667
+ $( '#' + $this.attr( 'for' ) ).click();
668
+ }
669
+ } );
670
+
671
  $( document ).on( 'change', '.wpforms-field-checkbox input, .wpforms-field-radio input, .wpforms-field-payment-multiple input, .wpforms-field-payment-checkbox input, .wpforms-field-gdpr-checkbox input', function( event ) {
672
 
673
  var $this = $( this ),
687
  break;
688
 
689
  case 'checkbox':
690
+ if ( $this.is( ':checked' ) ) {
691
  $this.closest( 'li' ).addClass( 'wpforms-selected' );
692
  $this.prop( 'checked', true );
693
  } else {
694
  $this.closest( 'li' ).removeClass( 'wpforms-selected' );
695
+ $this.prop( 'checked', false );
696
  }
697
  break;
698
  }
700
 
701
  // Upload fields: Check combined file size.
702
  $( document ).on( 'change', '.wpforms-field-file-upload input', function() {
703
+ var $this = $( this ),
704
+ $uploads = $this.closest( 'form.wpforms-form' ).find( '.wpforms-field-file-upload input' ),
705
+ totalSize = 0,
706
+ postMaxSize = Number( wpforms_settings.post_max_size ),
707
+ errorMsg = '<div class="wpforms-error-container-post_max_size">' + wpforms_settings.val_post_max_size + '</div>',
708
+ errorCntTpl = '<div class="wpforms-error-container">{errorMsg}</span></div>',
709
+ $submitCnt = $this.closest( 'form.wpforms-form' ).find( '.wpforms-submit-container' ),
710
+ $submitBtn = $submitCnt.find( 'button.wpforms-submit' ),
711
+ $errorCnt = $submitCnt.prev();
712
 
713
  // Calculating totalSize.
714
  $uploads.each( function() {
749
 
750
  } );
751
 
752
+ // Enter key event.
753
+ $( document ).on( 'keydown', '.wpforms-form input', function( e ) {
754
+
755
+ if ( e.keyCode !== 13 ) {
756
+ return;
757
+ }
 
 
 
 
 
 
 
 
 
 
758
 
 
 
759
  var $t = $( this ),
760
+ $page = $t.closest( '.wpforms-page' );
761
+
762
+ if ( $page.length === 0 ) {
763
+ return;
764
+ }
765
+
766
+ if ( [ 'text', 'tel', 'number', 'email', 'url', 'radio', 'checkbox' ].indexOf( $t.attr( 'type' ) ) < 0 ) {
767
+ return;
768
+ }
769
+
770
+ if ( $t.hasClass( 'wpforms-datepicker' ) ) {
771
+ $t.flatpickr( 'close' );
772
+ }
773
+
774
+ if ( $page.hasClass( 'last' ) ) {
775
+ $page.closest( '.wpforms-form' ).find( '.wpforms-submit' ).click();
776
+ return;
777
+ }
778
+
779
  e.preventDefault();
780
+ $page.find( '.wpforms-page-next' ).click();
 
781
  } );
782
 
783
  },
786
  * Update Pagebreak navigation.
787
  *
788
  * @since 1.2.2
789
+ *
790
+ * @param {jQuery} el jQuery element object.
791
  */
792
  pagebreakNav: function( el ) {
793
 
810
  // TODO: cleanup this BC with wpform_pageScroll.
811
  if ( false === window.wpforms_pageScroll ) {
812
  pageScroll = false;
813
+ } else if ( ! app.empty( window.wpform_pageScroll ) ) {
814
  pageScroll = window.wpform_pageScroll;
815
  } else {
816
  pageScroll = 75;
830
  // Scroll to first/top error on page.
831
  var $topError = $page.find( '.wpforms-error' ).first();
832
  if ( $topError.length ) {
833
+ app.animateScrollTop( $topError.offset().top - 75, 750, $topError.focus );
 
 
 
 
834
  }
835
  }
836
 
847
  if ( pageScroll ) {
848
 
849
  // Scroll to top of the form.
850
+ app.animateScrollTop( $form.offset().top - pageScroll );
 
 
851
  }
852
  $this.trigger( 'wpformsPageChange', [ page2, $form ] );
853
  }
862
  if ( pageScroll ) {
863
 
864
  // Scroll to top of the form.
865
+ app.animateScrollTop( $form.offset().top - pageScroll );
 
 
866
  }
867
  $this.trigger( 'wpformsPageChange', [ page2, $form ] );
868
  }
909
 
910
  // OM v5.
911
  document.addEventListener( 'om.Campaign.load', function( event ) {
912
+ app.ready();
913
+ app.optinMonsterRecaptchaReset( event.detail.Campaign.data.id );
914
  } );
915
 
916
  // OM Legacy.
917
  $( document ).on( 'OptinMonsterOnShow', function( event, data, object ) {
918
+ app.ready();
919
+ app.optinMonsterRecaptchaReset( data.optin );
920
  } );
921
  },
922
 
962
  */
963
  amountTotal: function( el, validate ) {
964
 
965
+ validate = validate || false;
966
+
967
+ var $form = $( el ).closest( '.wpforms-form' ),
968
  total = 0,
969
+ totalFormatted,
970
+ totalFormattedSymbol,
971
+ currency = app.getCurrency();
972
 
973
  $( '.wpforms-payment-price', $form ).each( function( index, el ) {
974
 
975
  var amount = 0,
976
  $this = $( this );
977
 
978
+ if ( $this.closest( '.wpforms-field-payment-single' ).hasClass( 'wpforms-conditional-hide' ) ) {
979
+ return;
980
+ }
981
  if ( 'text' === $this.attr( 'type' ) || 'hidden' === $this.attr( 'type' ) ) {
982
  amount = $this.val();
983
  } else if ( ( 'radio' === $this.attr( 'type' ) || 'checkbox' === $this.attr( 'type' ) ) && $this.is( ':checked' ) ) {
985
  } else if ( $this.is( 'select' ) && $this.find( 'option:selected' ).length > 0 ) {
986
  amount = $this.find( 'option:selected' ).data( 'amount' );
987
  }
988
+ if ( ! app.empty( amount ) ) {
989
+ amount = app.amountSanitize( amount );
990
  total = Number( total ) + Number( amount );
991
  }
992
  } );
993
 
994
+ totalFormatted = app.amountFormat( total );
995
 
996
  if ( 'left' === currency.symbol_pos ) {
997
  totalFormattedSymbol = currency.symbol + ' ' + totalFormatted;
1018
  */
1019
  amountSanitize: function( amount ) {
1020
 
1021
+ var currency = app.getCurrency();
1022
 
1023
  amount = amount.toString().replace( /[^0-9.,]/g, '' );
1024
 
1033
  amount = amount.replace( currency.thousands_sep, '' );
1034
  }
1035
 
1036
+ return app.numberFormat( amount, 2, '.', '' );
1037
  },
1038
 
1039
  /**
1043
  */
1044
  amountFormat: function( amount ) {
1045
 
1046
+ var currency = app.getCurrency();
1047
 
1048
  amount = String( amount );
1049
 
1060
  amount = amount.replace( ',', '' );
1061
  }
1062
 
1063
+ if ( app.empty( amount ) ) {
1064
  amount = 0;
1065
  }
1066
 
1067
+ return app.numberFormat( amount, 2, currency.decimal_sep, currency.thousands_sep );
1068
  },
1069
 
1070
  /**
1174
  */
1175
  setUserIndentifier: function() {
1176
 
1177
+ if ( ( ( ! window.hasRequiredConsent && typeof wpforms_settings !== 'undefined' && wpforms_settings.uuid_cookie ) || ( window.hasRequiredConsent && window.hasRequiredConsent() ) ) && ! app.getCookie( '_wpfuuid' ) ) {
1178
 
1179
  // Generate UUID - http://stackoverflow.com/a/873856/1489528
1180
  var s = new Array( 36 ),
1190
 
1191
  uuid = s.join( '' );
1192
 
1193
+ app.createCookie( '_wpfuuid', uuid, 3999 );
1194
  }
1195
  },
1196
 
1250
  */
1251
  removeCookie: function( name ) {
1252
 
1253
+ app.createCookie( name, '', -1 );
1254
  },
1255
 
1256
  /**
1304
  var countryCode = ( resp && resp.country ) ? resp.country : '';
1305
 
1306
  if ( ! countryCode ) {
1307
+ var lang = app.getFirstBrowserLanguage();
1308
  countryCode = lang.indexOf( '-' ) > -1 ? lang.split( '-' ).pop() : '';
1309
  }
1310
 
1311
  callback( countryCode );
1312
  } );
1313
  },
1314
+
1315
+ /**
1316
+ * Form submit.
1317
+ *
1318
+ * @since 1.5.3
1319
+ *
1320
+ * @param {jQuery} $form Form element.
1321
+ */
1322
+ formSubmit: function( $form ) {
1323
+
1324
+ if ( $form.hasClass( 'wpforms-ajax-form' ) && typeof FormData !== 'undefined' ) {
1325
+ app.formSubmitAjax( $form );
1326
+ } else {
1327
+ app.formSubmitNormal( $form );
1328
+ }
1329
+ },
1330
+
1331
+ /**
1332
+ * Normal form submit with page reload.
1333
+ *
1334
+ * @since 1.5.3
1335
+ *
1336
+ * @param {jQuery} $form Form element.
1337
+ */
1338
+ formSubmitNormal: function( $form ) {
1339
+
1340
+ if ( ! $form.length ) {
1341
+ return;
1342
+ }
1343
+
1344
+ var $submit = $form.find( '.wpforms-submit' ),
1345
+ recaptchaID = $submit.get( 0 ).recaptchaID;
1346
+
1347
+ if ( ! app.empty( recaptchaID ) || recaptchaID === 0 ) {
1348
+ $submit.get( 0 ).recaptchaID = false;
1349
+ }
1350
+
1351
+ $form.get( 0 ).submit();
1352
+ },
1353
+
1354
+ /**
1355
+ * Reset form recaptcha.
1356
+ *
1357
+ * @since 1.5.3
1358
+ *
1359
+ * @param {jQuery} $form Form element.
1360
+ */
1361
+ resetFormRecaptcha: function( $form ) {
1362
+
1363
+ if ( ! $form || ! $form.length ) {
1364
+ return;
1365
+ }
1366
+
1367
+ if ( typeof grecaptcha === 'undefined' ) {
1368
+ return;
1369
+ }
1370
+
1371
+ var recaptchaID;
1372
+
1373
+ // Check for invisible recaptcha first.
1374
+ recaptchaID = $form.find( '.wpforms-submit' ).get( 0 ).recaptchaID;
1375
+
1376
+ // Check for v2 recaptcha if invisible recaptcha is not found.
1377
+ if ( app.empty( recaptchaID ) && recaptchaID !== 0 ) {
1378
+ recaptchaID = $form.find( '.g-recaptcha' ).data( 'recaptcha-id' );
1379
+ }
1380
+
1381
+ // Reset recaptcha.
1382
+ if ( ! app.empty( recaptchaID ) || recaptchaID === 0 ) {
1383
+ grecaptcha.reset( recaptchaID );
1384
+ }
1385
+ },
1386
+
1387
+ /**
1388
+ * Console log AJAX error.
1389
+ *
1390
+ * @since 1.5.3
1391
+ *
1392
+ * @param {string} error Error text (optional).
1393
+ */
1394
+ consoleLogAjaxError: function( error ) {
1395
+
1396
+ if ( error ) {
1397
+ console.error( 'WPForms AJAX submit error:\n%s', error ); // eslint-disable-line no-console
1398
+ } else {
1399
+ console.error( 'WPForms AJAX submit error' ); // eslint-disable-line no-console
1400
+ }
1401
+ },
1402
+
1403
+ /**
1404
+ * Display form AJAX errors.
1405
+ *
1406
+ * @since 1.5.3
1407
+ *
1408
+ * @param {jQuery} $form Form element.
1409
+ * @param {object} errors Errors in format { general: { generalErrors }, field: { fieldErrors } }.
1410
+ */
1411
+ displayFormAjaxErrors: function( $form, errors ) {
1412
+
1413
+ if ( app.empty( errors ) || ( app.empty( errors.general ) && app.empty( errors.field ) ) ) {
1414
+ app.consoleLogAjaxError();
1415
+ return;
1416
+ }
1417
+
1418
+ if ( ! app.empty( errors.general ) ) {
1419
+ app.displayFormAjaxGeneralErrors( $form, errors.general );
1420
+ }
1421
+
1422
+ if ( ! app.empty( errors.field ) ) {
1423
+ app.displayFormAjaxFieldErrors( $form, errors.field );
1424
+ }
1425
+ },
1426
+
1427
+ /**
1428
+ * Display form AJAX general errors that cannot be displayed using jQuery Validation plugin.
1429
+ *
1430
+ * @since 1.5.3
1431
+ *
1432
+ * @param {jQuery} $form Form element.
1433
+ * @param {object} errors Errors in format { errorType: errorText }.
1434
+ */
1435
+ displayFormAjaxGeneralErrors: function( $form, errors ) {
1436
+
1437
+ if ( ! $form || ! $form.length ) {
1438
+ return;
1439
+ }
1440
+
1441
+ if ( app.empty( errors ) ) {
1442
+ return;
1443
+ }
1444
+
1445
+ $.each( errors, function( type, html ) {
1446
+ switch ( type ) {
1447
+ case 'header':
1448
+ $form.prepend( html );
1449
+ break;
1450
+ case 'footer':
1451
+ $form.find( '.wpforms-submit-container' ).before( html );
1452
+ break;
1453
+ case 'recaptcha':
1454
+ $form.find( '.wpforms-recaptcha-container' ).append( html );
1455
+ break;
1456
+ }
1457
+ } );
1458
+ },
1459
+
1460
+ /**
1461
+ * Clear forms AJAX general errors that cannot be cleared using jQuery Validation plugin.
1462
+ *
1463
+ * @since 1.5.3
1464
+ *
1465
+ * @param {jQuery} $form Form element.
1466
+ */
1467
+ clearFormAjaxGeneralErrors: function( $form ) {
1468
+
1469
+ $form.find( '.wpforms-error-container' ).remove();
1470
+ $form.find( '#wpforms-field_recaptcha-error' ).remove();
1471
+ },
1472
+
1473
+ /**
1474
+ * Display form AJAX field errors using jQuery Validation plugin.
1475
+ *
1476
+ * @since 1.5.3
1477
+ *
1478
+ * @param {jQuery} $form Form element.
1479
+ * @param {object} errors Errors in format { fieldName: errorText }.
1480
+ */
1481
+ displayFormAjaxFieldErrors: function( $form, errors ) {
1482
+
1483
+ if ( ! $form || ! $form.length ) {
1484
+ return;
1485
+ }
1486
+
1487
+ if ( app.empty( errors ) ) {
1488
+ return;
1489
+ }
1490
+
1491
+ var validator = $form.data( 'validator' );
1492
+
1493
+ if ( ! validator ) {
1494
+ return;
1495
+ }
1496
+
1497
+ validator.showErrors( errors );
1498
+ validator.focusInvalid();
1499
+ },
1500
+
1501
+ /**
1502
+ * Submit a form using AJAX.
1503
+ *
1504
+ * @since 1.5.3
1505
+ *
1506
+ * @param {jQuery} $form Form element.
1507
+ *
1508
+ * @returns {JQueryXHR|JQueryDeferred} Promise like object for async callbacks.
1509
+ */
1510
+ formSubmitAjax: function( $form ) {
1511
+
1512
+ if ( ! $form.length ) {
1513
+ return $.Deferred().reject(); // eslint-disable-line new-cap
1514
+ }
1515
+
1516
+ var $container = $form.closest( '.wpforms-container' ),
1517
+ $spinner = $form.find( '.wpforms-submit-spinner' ),
1518
+ $confirmationScroll,
1519
+ formData,
1520
+ args;
1521
+
1522
+ $container.css( 'opacity', 0.6 );
1523
+ $spinner.show();
1524
+
1525
+ app.clearFormAjaxGeneralErrors( $form );
1526
+
1527
+ formData = new FormData( $form.get( 0 ) );
1528
+ formData.append( 'action', 'wpforms_submit' );
1529
+
1530
+ args = {
1531
+ type : 'post',
1532
+ dataType : 'json',
1533
+ url : wpforms_settings.ajaxurl,
1534
+ data : formData,
1535
+ cache : false,
1536
+ contentType: false,
1537
+ processData: false,
1538
+ };
1539
+
1540
+ args.success = function( json ) {
1541
+
1542
+ if ( ! json ) {
1543
+ app.consoleLogAjaxError();
1544
+ return;
1545
+ }
1546
+
1547
+ if ( ! json.success ) {
1548
+ app.resetFormRecaptcha( $form );
1549
+ var errors = json.data && 'errors' in json.data ? json.data.errors : null;
1550
+ app.displayFormAjaxErrors( $form, errors );
1551
+ $form.trigger( 'wpformsAjaxSubmitFailed', json );
1552
+ return;
1553
+ }
1554
+
1555
+ $form.trigger( 'wpformsAjaxSubmitSuccess', json );
1556
+
1557
+ if ( ! json.data ) {
1558
+ return;
1559
+ }
1560
+
1561
+ if ( json.data.redirect_url ) {
1562
+ $form.trigger( 'wpformsAjaxSubmitBeforeRedirect', json );
1563
+ window.location = json.data.redirect_url;
1564
+ return;
1565
+ }
1566
+
1567
+ if ( json.data.confirmation ) {
1568
+ $container.html( json.data.confirmation );
1569
+ $confirmationScroll = $container.find( 'div.wpforms-confirmation-scroll' );
1570
+ if ( $confirmationScroll.length ) {
1571
+ app.animateScrollTop( $confirmationScroll.offset().top - 100 );
1572
+ }
1573
+ }
1574
+ };
1575
+
1576
+ args.error = function( jqHXR, textStatus, error ) {
1577
+
1578
+ app.consoleLogAjaxError( error );
1579
+
1580
+ $form.trigger( 'wpformsAjaxSubmitError', [ jqHXR, textStatus, error ] );
1581
+ };
1582
+
1583
+ args.complete = function( jqHXR, textStatus ) {
1584
+
1585
+ var $submit = $form.find( '.wpforms-submit' ),
1586
+ submitText = $submit.data( 'submit-text' );
1587
+
1588
+ if ( submitText ) {
1589
+ $submit.text( submitText ).prop( 'disabled', false );
1590
+ }
1591
+
1592
+ $container.css( 'opacity', '' );
1593
+ $spinner.hide();
1594
+
1595
+ $form.trigger( 'wpformsAjaxSubmitCompleted', [ jqHXR, textStatus ] );
1596
+ };
1597
+
1598
+ $form.trigger( 'wpformsAjaxBeforeSubmit' );
1599
+
1600
+ return $.ajax( args );
1601
+ },
1602
+
1603
+ /**
1604
+ * Scroll to position with animation.
1605
+ *
1606
+ * @since 1.5.3
1607
+ *
1608
+ * @param {number} position Position (in pixels) to scroll to,
1609
+ * @param {number} duration Animation duration.
1610
+ * @param {Function} complete Function to execute after animation is complete.
1611
+ *
1612
+ * @returns {JQueryPromise} Promise object for async callbacks.
1613
+ */
1614
+ animateScrollTop: function( position, duration, complete ) {
1615
+
1616
+ duration = duration || 1000;
1617
+ return $( 'html, body' ).animate( { scrollTop: position }, duration, complete ).promise();
1618
+ },
1619
  };
1620
 
1621
+ return app;
 
1622
 
1623
+ }( document, window, jQuery ) );
 
1624
 
1625
+ // Initialize.
1626
+ wpforms.init();
changelog.txt CHANGED
@@ -1,5 +1,16 @@
1
  == Changelog ==
2
 
 
 
 
 
 
 
 
 
 
 
 
3
  = 1.5.2.3 =
4
  - Fixed: PHP error if checkbox field is empty when form is submitted.
5
 
1
  == Changelog ==
2
 
3
+ = 1.5.3 =
4
+ - Added: AJAX form submissions.
5
+ - Added: Full support and compatiblity with Google AMP.
6
+ - Added: Google reCAPTCHA v3.
7
+ - Changed: WPForms uninstall script for better cleanup process.
8
+ - Changed: Email field mailcheck feature to offer additional controls. New filters: `wpforms_mailcheck_enabled`, `wpforms_mailcheck_domains`, and `wpforms_mailcheck_toplevel_domains`.
9
+ - Fixed: Special characters aren't encoded when Smart Tags are processed in query string.
10
+ - Fixed: Fields with Image choices are not working with some Android and older desktop browsers.
11
+ - Fixed: Form Builder: Several alert modals are displayed in batch if multiple providers have configuration issues.
12
+ - Fixed: WP_Post object is returned from `wpforms()->form->get()` if form data is requested with a non-WPForms post ID.
13
+
14
  = 1.5.2.3 =
15
  - Fixed: PHP error if checkbox field is empty when form is submitted.
16
 
includes/admin/admin.php CHANGED
@@ -344,8 +344,8 @@ function wpforms_admin_upgrade_link( $medium = 'link' ) {
344
  */
345
  function wpforms_check_php_version() {
346
 
347
- // Display for PHP below 5.4.
348
- if ( version_compare( PHP_VERSION, '5.4', '>=' ) ) {
349
  return;
350
  }
351
 
@@ -379,7 +379,7 @@ function wpforms_check_php_version() {
379
  ) .
380
  '<br><br><em>' .
381
  wp_kses(
382
- __( '<strong>Please Note:</strong> Support for PHP 5.3 will be discontinued in 2019. After this, if no further action is taken, WPForms functionality will be disabled.', 'wpforms-lite' ),
383
  array(
384
  'strong' => array(),
385
  'em' => array(),
344
  */
345
  function wpforms_check_php_version() {
346
 
347
+ // Display for PHP below 5.6
348
+ if ( version_compare( PHP_VERSION, '5.5', '>=' ) ) {
349
  return;
350
  }
351
 
379
  ) .
380
  '<br><br><em>' .
381
  wp_kses(
382
+ __( '<strong>Please Note:</strong> Support for PHP 5.3 to 5.5 will be discontinued in 2019. After this, if no further action is taken, WPForms functionality will be disabled.', 'wpforms-lite' ),
383
  array(
384
  'strong' => array(),
385
  'em' => array(),
includes/admin/builder/panels/class-settings.php CHANGED
@@ -150,12 +150,23 @@ class WPForms_Builder_Panel_Settings extends WPForms_Builder_Panel {
150
  $recaptcha_secret = wpforms_setting( 'recaptcha-secret-key' );
151
  $recaptcha_type = wpforms_setting( 'recaptcha-type' );
152
  if ( ! empty( $recaptcha_key ) && ! empty( $recaptcha_secret ) ) {
 
 
 
 
 
 
 
 
 
 
 
153
  wpforms_panel_field(
154
  'checkbox',
155
  'settings',
156
  'recaptcha',
157
  $this->form_data,
158
- 'invisible' === $recaptcha_type ? esc_html__( 'Enable Google Invisible v2 reCAPTCHA', 'wpforms-lite' ) : esc_html__( 'Enable Google Checkbox v2 reCAPTCHA', 'wpforms-lite' )
159
  );
160
  }
161
  wpforms_panel_field(
@@ -168,6 +179,16 @@ class WPForms_Builder_Panel_Settings extends WPForms_Builder_Panel {
168
  'tooltip' => '<a href="https://developers.wpforms.com/docs/enable-dynamic-field-population/" target="_blank" rel="noopener noreferrer">' . esc_html__( 'How to use Dynamic Field Population', 'wpforms-lite' ) . '</a>',
169
  )
170
  );
 
 
 
 
 
 
 
 
 
 
171
 
172
  do_action( 'wpforms_form_settings_general', $this );
173
  echo '</div>';
150
  $recaptcha_secret = wpforms_setting( 'recaptcha-secret-key' );
151
  $recaptcha_type = wpforms_setting( 'recaptcha-type' );
152
  if ( ! empty( $recaptcha_key ) && ! empty( $recaptcha_secret ) ) {
153
+ switch ( $recaptcha_type ) {
154
+ case 'v2':
155
+ $lbl = esc_html__( 'Enable Google Checkbox v2 reCAPTCHA', 'wpforms-lite' );
156
+ break;
157
+ case 'invisible':
158
+ $lbl = esc_html__( 'Enable Google Invisible v2 reCAPTCHA', 'wpforms-lite' );
159
+ break;
160
+ case 'v3':
161
+ $lbl = esc_html__( 'Enable Google v3 reCAPTCHA', 'wpforms-lite' );
162
+ break;
163
+ }
164
  wpforms_panel_field(
165
  'checkbox',
166
  'settings',
167
  'recaptcha',
168
  $this->form_data,
169
+ $lbl
170
  );
171
  }
172
  wpforms_panel_field(
179
  'tooltip' => '<a href="https://developers.wpforms.com/docs/enable-dynamic-field-population/" target="_blank" rel="noopener noreferrer">' . esc_html__( 'How to use Dynamic Field Population', 'wpforms-lite' ) . '</a>',
180
  )
181
  );
182
+ wpforms_panel_field(
183
+ 'checkbox',
184
+ 'settings',
185
+ 'ajax_submit',
186
+ $this->form_data,
187
+ esc_html__( 'Enable AJAX form submission', 'wpforms-lite' ),
188
+ array(
189
+ 'tooltip' => esc_html__( 'Enables form submission without page reload.', 'wpforms-lite' ),
190
+ )
191
+ );
192
 
193
  do_action( 'wpforms_form_settings_general', $this );
194
  echo '</div>';
includes/admin/class-settings.php CHANGED
@@ -123,6 +123,9 @@ class WPForms_Settings {
123
  case 'color':
124
  $value = wpforms_sanitize_hex_color( $value );
125
  break;
 
 
 
126
  case 'text':
127
  case 'radio':
128
  case 'select':
@@ -228,8 +231,37 @@ class WPForms_Settings {
228
 
229
  // reCAPTCHA heading description is long so we define it separately.
230
  $recaptcha_desc = '<p>' . esc_html__( 'reCAPTCHA is a free anti-spam service from Google which helps to protect your website from spam and abuse while letting real people pass through with ease.', 'wpforms-lite' ) . '</p>';
231
- $recaptcha_desc .= '<p>' . esc_html__( 'Google\'s original checkbox reCAPTCHA prompts users to check a box to prove they\'re human, whereas the newer Invisible reCAPTCHA uses advanced technology to detect real users without requiring any input. WPForms supports both versions of Google\'s v2 reCAPTCHA.', 'wpforms-lite' ) . '</p>';
232
- $recaptcha_desc .= '<p>' . esc_html__( 'Sites already using the original checkbox reCAPTCHA will need to create new site keys before switching to the Invisible reCAPTCHA.', 'wpforms-lite' ) . '</p>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
233
  $recaptcha_desc .=
234
  '<p>' .
235
  sprintf(
@@ -246,7 +278,7 @@ class WPForms_Settings {
246
  ),
247
  'https://wpforms.com/docs/setup-captcha-wpforms/'
248
  ) .
249
- '</p>';
250
 
251
  $defaults = array(
252
  // General Settings tab.
@@ -386,6 +418,7 @@ class WPForms_Settings {
386
  'options' => array(
387
  'v2' => esc_html__( 'Checkbox reCAPTCHA v2', 'wpforms-lite' ),
388
  'invisible' => esc_html__( 'Invisible reCAPTCHA v2', 'wpforms-lite' ),
 
389
  ),
390
  ),
391
  'recaptcha-site-key' => array(
@@ -398,6 +431,25 @@ class WPForms_Settings {
398
  'name' => esc_html__( 'Secret Key', 'wpforms-lite' ),
399
  'type' => 'text',
400
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
401
  'recaptcha-noconflict' => array(
402
  'id' => 'recaptcha-noconflict',
403
  'name' => esc_html__( 'No-Conflict Mode', 'wpforms-lite' ),
@@ -491,11 +543,16 @@ class WPForms_Settings {
491
  'uninstall-data' => array(
492
  'id' => 'uninstall-data',
493
  'name' => esc_html__( 'Uninstall WPForms', 'wpforms-lite' ),
494
- 'desc' => esc_html__( 'Check this if you would like to remove ALL WPForms data upon plugin deletion. All forms, entries, and uploaded files will be unrecoverable.', 'wpforms-lite' ),
495
  'type' => 'checkbox',
496
  ),
497
  ),
498
  );
 
 
 
 
 
499
  $defaults = apply_filters( 'wpforms_settings_defaults', $defaults );
500
 
501
  return empty( $view ) ? $defaults : $defaults[ $view ];
123
  case 'color':
124
  $value = wpforms_sanitize_hex_color( $value );
125
  break;
126
+ case 'number':
127
+ $value = (float) $value;
128
+ break;
129
  case 'text':
130
  case 'radio':
131
  case 'select':
231
 
232
  // reCAPTCHA heading description is long so we define it separately.
233
  $recaptcha_desc = '<p>' . esc_html__( 'reCAPTCHA is a free anti-spam service from Google which helps to protect your website from spam and abuse while letting real people pass through with ease.', 'wpforms-lite' ) . '</p>';
234
+ $recaptcha_desc .= '<p>' . esc_html__( 'Google offers 3 versions of reCAPTCHA (all supported within WPForms):', 'wpforms-lite' ) . '</p>';
235
+ $recaptcha_desc .= '<ul style="list-style: disc;margin-left: 20px;">';
236
+ $recaptcha_desc .=
237
+ '<li>' .
238
+ wp_kses(
239
+ __( '<strong>v2 Checkbox reCAPTCHA</strong>: Prompts users to check a box to prove they\'re human.', 'wpforms-lite' ),
240
+ array(
241
+ 'strong' => array()
242
+ )
243
+ ) .
244
+ '</li>';
245
+ $recaptcha_desc .=
246
+ '<li>' .
247
+ wp_kses(
248
+ __( '<strong>v2 Invisible reCAPTCHA</strong>: Uses advanced technology to detect real users without requiring any input.', 'wpforms-lite' ),
249
+ array(
250
+ 'strong' => array()
251
+ )
252
+ ) .
253
+ '</li>';
254
+ $recaptcha_desc .=
255
+ '<li>' .
256
+ wp_kses(
257
+ __( '<strong>v3 reCAPTCHA</strong>: Uses a behind-the-scenes scoring system to detect abusive traffic, and lets you decide the minimum passing score. Recommended for advanced use only (or if using Google AMP).', 'wpforms-lite' ),
258
+ array(
259
+ 'strong' => array()
260
+ )
261
+ ) .
262
+ '</li>';
263
+ $recaptcha_desc .= '</ul>';
264
+ $recaptcha_desc .= '<p>' . esc_html__( 'Sites already using one type of reCAPTCHA will need to create new site keys before switching to a different option.', 'wpforms-lite' ) . '</p>';
265
  $recaptcha_desc .=
266
  '<p>' .
267
  sprintf(
278
  ),
279
  'https://wpforms.com/docs/setup-captcha-wpforms/'
280
  ) .
281
+ '</p></ul>';
282
 
283
  $defaults = array(
284
  // General Settings tab.
418
  'options' => array(
419
  'v2' => esc_html__( 'Checkbox reCAPTCHA v2', 'wpforms-lite' ),
420
  'invisible' => esc_html__( 'Invisible reCAPTCHA v2', 'wpforms-lite' ),
421
+ 'v3' => esc_html__( 'reCAPTCHA v3', 'wpforms-lite' ),
422
  ),
423
  ),
424
  'recaptcha-site-key' => array(
431
  'name' => esc_html__( 'Secret Key', 'wpforms-lite' ),
432
  'type' => 'text',
433
  ),
434
+ 'recaptcha-fail-msg' => array(
435
+ 'id' => 'recaptcha-fail-msg',
436
+ 'name' => esc_html__( 'Fail Message', 'wpforms-lite' ),
437
+ 'desc' => esc_html__( 'The message displayed to users who fail the reCAPTCHA verification process.', 'wpforms-lite' ),
438
+ 'type' => 'text',
439
+ 'default' => esc_html__( 'Google reCAPTCHA verification failed, please try again later.', 'wpforms-lite' ),
440
+ ),
441
+ 'recaptcha-v3-threshold' => array(
442
+ 'id' => 'recaptcha-v3-threshold',
443
+ 'name' => esc_html__( 'Score Threshold', 'wpforms-lite' ),
444
+ 'desc' => esc_html__( 'reCAPTCHA v3 returns a score (1.0 is very likely a good interaction, 0.0 is very likely a bot). If the score less than or equal to this threshold, the form submission will be blocked and the message above will be displayed.', 'wpforms-lite' ),
445
+ 'type' => 'number',
446
+ 'attr' => array(
447
+ 'step' => '0.1',
448
+ 'min' => '0.0',
449
+ 'max' => '1.0',
450
+ ),
451
+ 'default' => esc_html__( '0.4', 'wpforms-lite' ),
452
+ ),
453
  'recaptcha-noconflict' => array(
454
  'id' => 'recaptcha-noconflict',
455
  'name' => esc_html__( 'No-Conflict Mode', 'wpforms-lite' ),
543
  'uninstall-data' => array(
544
  'id' => 'uninstall-data',
545
  'name' => esc_html__( 'Uninstall WPForms', 'wpforms-lite' ),
546
+ 'desc' => esc_html__( 'Check this if you would like to remove ALL WPForms data upon plugin deletion. All forms and settings will be unrecoverable.', 'wpforms-lite' ),
547
  'type' => 'checkbox',
548
  ),
549
  ),
550
  );
551
+
552
+ if ( wpforms()->pro ) {
553
+ $defaults['misc']['uninstall-data']['desc'] = esc_html__( 'Check this if you would like to remove ALL WPForms data upon plugin deletion. All forms, entries, and uploaded files will be unrecoverable.', 'wpforms' );
554
+ }
555
+
556
  $defaults = apply_filters( 'wpforms_settings_defaults', $defaults );
557
 
558
  return empty( $view ) ? $defaults : $defaults[ $view ];
includes/admin/settings-api.php CHANGED
@@ -195,6 +195,41 @@ function wpforms_settings_text_callback( $args ) {
195
  return $output;
196
  }
197
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  /**
199
  * Settings select field callback.
200
  *
195
  return $output;
196
  }
197
 
198
+ /**
199
+ * Settings number input field callback.
200
+ *
201
+ * @since 1.5.3
202
+ *
203
+ * @param array $args Setting field arguments.
204
+ *
205
+ * @return string
206
+ */
207
+ function wpforms_settings_number_callback( $args ) {
208
+
209
+ $default = isset( $args['default'] ) ? esc_html( $args['default'] ) : '';
210
+ $id = 'wpforms-setting-' . wpforms_sanitize_key( $args['id'] );
211
+ $attr = array(
212
+ 'value' => wpforms_setting( $args['id'], $default ),
213
+ 'name' => wpforms_sanitize_key( $args['id'] ),
214
+ );
215
+ $data = ! empty( $args['data'] ) ? $args['data'] : array();
216
+
217
+ if ( ! empty( $args['attr'] ) ) {
218
+ $attr = array_merge( $attr, $args['attr'] );
219
+ }
220
+
221
+ $output = sprintf(
222
+ '<input type="number" %s>',
223
+ wpforms_html_attributes( $id, array(), $data, $attr )
224
+ );
225
+
226
+ if ( ! empty( $args['desc'] ) ) {
227
+ $output .= '<p class="desc">' . wp_kses_post( $args['desc'] ) . '</p>';
228
+ }
229
+
230
+ return $output;
231
+ }
232
+
233
  /**
234
  * Settings select field callback.
235
  *
includes/class-form.php CHANGED
@@ -83,8 +83,8 @@ class WPForms_Form_Handler {
83
  *
84
  * @since 1.0.0
85
  *
86
- * @param mixed $id
87
- * @param array $args
88
  *
89
  * @return array|bool|null|WP_Post
90
  */
@@ -102,8 +102,8 @@ class WPForms_Form_Handler {
102
  // If ID is provided, we get a single form
103
  $forms = get_post( absint( $id ) );
104
 
105
- if ( ! empty( $args['content_only'] ) && ! empty( $forms ) && 'wpforms' === $forms->post_type ) {
106
- $forms = wpforms_decode( $forms->post_content );
107
  }
108
  } else {
109
 
83
  *
84
  * @since 1.0.0
85
  *
86
+ * @param mixed $id Form ID.
87
+ * @param array $args Additional arguments array.
88
  *
89
  * @return array|bool|null|WP_Post
90
  */
102
  // If ID is provided, we get a single form
103
  $forms = get_post( absint( $id ) );
104
 
105
+ if ( ! empty( $args['content_only'] ) ) {
106
+ $forms = ! empty( $forms ) && 'wpforms' === $forms->post_type ? wpforms_decode( $forms->post_content ) : false;
107
  }
108
  } else {
109
 
includes/class-frontend.php CHANGED
@@ -35,6 +35,7 @@ class WPForms_Frontend {
35
  * Contains a form confirmation message.
36
  *
37
  * @since 1.4.8
 
38
  *
39
  * @var string
40
  */
@@ -58,6 +59,9 @@ class WPForms_Frontend {
58
 
59
  $this->forms = array();
60
 
 
 
 
61
  // Actions.
62
  add_action( 'wpforms_frontend_output_success', array( $this, 'confirmation' ), 10, 3 );
63
  add_action( 'wpforms_frontend_output', array( $this, 'head' ), 5, 5 );
@@ -81,6 +85,33 @@ class WPForms_Frontend {
81
  add_shortcode( 'wpforms', array( $this, 'shortcode' ) );
82
  }
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  /**
85
  * Primary function to render a form on the frontend.
86
  *
@@ -119,6 +150,29 @@ class WPForms_Frontend {
119
  return;
120
  }
121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  // Add url query var wpforms_form_id to track post_max_size overflows.
123
  if ( in_array( 'file-upload', wp_list_pluck( $form_data['fields'], 'type' ), true ) ) {
124
  $action = add_query_arg( 'wpforms_form_id', $form_id, $action );
@@ -174,41 +228,102 @@ class WPForms_Frontend {
174
  }
175
  $classes = wpforms_sanitize_classes( $classes, true );
176
 
177
- // Begin to build the output.
178
- printf(
179
- '<div class="wpforms-container %s" id="wpforms-%d">',
180
- $classes,
181
- $form_id
 
 
 
 
 
 
 
 
 
 
 
 
182
  );
183
 
184
- $form_atts = apply_filters( 'wpforms_frontend_form_atts', array(
185
- 'id' => sprintf( 'wpforms-form-%d', absint( $form_id ) ),
186
- 'class' => array( 'wpforms-validate', 'wpforms-form' ),
187
- 'data' => array(
188
- 'formid' => absint( $form_id ),
189
- ),
190
- 'atts' => array(
191
- 'method' => 'post',
192
- 'enctype' => 'multipart/form-data',
193
- 'action' => esc_url( $action ),
 
 
 
 
 
 
194
  ),
195
- ), $form_data );
196
- echo '<form ' . wpforms_html_attributes( $form_atts['id'], $form_atts['class'], $form_atts['data'], $form_atts['atts'] ) . '>';
 
 
 
 
 
 
197
 
198
- do_action( 'wpforms_frontend_output', $form_data, null, $title, $description, $errors );
 
 
 
199
 
200
- echo '</form>';
 
 
201
 
202
- echo '</div>';
203
 
204
- // After output hook.
205
- do_action( 'wpforms_frontend_output_after', $form_data, $form );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
 
207
  // Add form to class property that tracks all forms in a page.
208
  $this->forms[ $form_id ] = $form_data;
209
 
210
  // Optional debug information if WPFORMS_DEBUG is defined.
211
  wpforms_debug_data( $form_data );
 
 
 
212
  }
213
 
214
  /**
@@ -221,15 +336,15 @@ class WPForms_Frontend {
221
  * @param int $entry_id Entry id.
222
  */
223
  public function confirmation( $form_data, $fields = array(), $entry_id = 0 ) {
 
224
 
225
- // Only display if a confirmation message has been configured.
226
- if ( empty( $this->confirmation_message ) ) {
 
 
227
  return;
228
  }
229
 
230
- // Load confirmation specific assets.
231
- $this->assets_confirmation();
232
-
233
  if ( empty( $fields ) ) {
234
  $fields = ! empty( $_POST['wpforms']['complete'] ) ? $_POST['wpforms']['complete'] : array();
235
  }
@@ -238,16 +353,23 @@ class WPForms_Frontend {
238
  $entry_id = ! empty( $_POST['wpforms']['entry_id'] ) ? $_POST['wpforms']['entry_id'] : 0;
239
  }
240
 
241
- $message = apply_filters( 'wpforms_process_smart_tags', $this->confirmation_message, $form_data, $fields, $entry_id );
242
- $message = apply_filters( 'wpforms_frontend_confirmation_message', wpautop( $message ), $form_data, $fields, $entry_id );
243
- $class = wpforms_setting( 'disable-css', '1' ) == '1' ? 'wpforms-confirmation-container-full' : 'wpforms-confirmation-container';
244
- $class .= $this->confirmation_message_scroll ? ' wpforms-confirmation-scroll' : '';
 
 
 
 
 
 
 
245
 
246
  printf(
247
  '<div class="%s" id="wpforms-confirmation-%d">%s</div>',
248
  $class,
249
  absint( $form_data['id'] ),
250
- $message
251
  );
252
  }
253
 
@@ -283,7 +405,7 @@ class WPForms_Frontend {
283
 
284
  // Output header errors if they exist.
285
  if ( ! empty( $errors['header'] ) ) {
286
- echo '<div class="wpforms-error-container">' . wpforms_sanitize_error( $errors['header'] ) . '</div>';
287
  }
288
  }
289
 
@@ -448,6 +570,10 @@ class WPForms_Frontend {
448
  */
449
  public function get_field_properties( $field, $form_data, $attributes = array() ) {
450
 
 
 
 
 
451
  // This filter is for backwards compatibility purposes.
452
  $types = array( 'text', 'textarea', 'number', 'email', 'hidden', 'url', 'html', 'divider', 'password', 'phone', 'address', 'checkbox', 'radio' );
453
  if ( in_array( $field['type'], $types, true ) ) {
@@ -689,6 +815,7 @@ class WPForms_Frontend {
689
  // Check that recaptcha is configured in the settings.
690
  $site_key = wpforms_setting( 'recaptcha-site-key' );
691
  $secret_key = wpforms_setting( 'recaptcha-secret-key' );
 
692
  if ( ! $site_key || ! $secret_key ) {
693
  return;
694
  }
@@ -701,7 +828,41 @@ class WPForms_Frontend {
701
  return;
702
  }
703
 
704
- $type = wpforms_setting( 'recaptcha-type', 'v2' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
705
  $visible = $this->pages ? 'style="display:none;"' : '';
706
  $data = array(
707
  'sitekey' => trim( sanitize_text_field( $site_key ) ),
@@ -714,15 +875,15 @@ class WPForms_Frontend {
714
 
715
  echo '<div class="wpforms-recaptcha-container" ' . $visible . '>';
716
 
717
- echo '<div ' . wpforms_html_attributes( '', array( 'g-recaptcha' ), $data ) . '></div>';
718
 
719
- if ( 'invisible' !== $type ) {
720
- echo '<input type="text" name="g-recaptcha-hidden" class="wpforms-recaptcha-hidden" style="position:absolute!important;clip:rect(0,0,0,0)!important;height:1px!important;width:1px!important;border:0!important;overflow:hidden!important;padding:0!important;margin:0!important;" required>';
721
- }
722
 
723
- if ( ! empty( $errors['recaptcha'] ) ) {
724
- echo '<label id="wpforms-field_recaptcha-error" class="wpforms-error">' . esc_html( $errors['recaptcha'] ) . '</label>';
725
- }
726
 
727
  echo '</div>';
728
  }
@@ -743,13 +904,23 @@ class WPForms_Frontend {
743
  $form_id = absint( $form_data['id'] );
744
  $settings = $form_data['settings'];
745
  $submit = apply_filters( 'wpforms_field_submit', $settings['submit_text'], $form_data );
746
- $process = '';
747
  $classes = '';
748
  $visible = $this->pages ? 'style="display:none;"' : '';
749
 
750
  // Check for submit button alt-text.
751
  if ( ! empty( $settings['submit_text_processing'] ) ) {
752
- $process = 'data-alt-text="' . esc_attr( $settings['submit_text_processing'] ) . '"';
 
 
 
 
 
 
 
 
 
 
753
  }
754
 
755
  // Check user defined submit button classes.
@@ -757,35 +928,79 @@ class WPForms_Frontend {
757
  $classes = wpforms_sanitize_classes( $settings['submit_class'] );
758
  }
759
 
 
 
 
 
 
760
  // Output footer errors if they exist.
761
  if ( ! empty( $errors['footer'] ) ) {
762
- echo '<div class="wpforms-error-container">' . wpforms_sanitize_error( $errors['footer'] ) . '</div>';
763
  }
764
 
765
  // Submit button area.
766
  echo '<div class="wpforms-submit-container" ' . $visible . '>';
767
 
768
- echo '<input type="hidden" name="wpforms[id]" value="' . $form_id . '">';
769
 
770
  echo '<input type="hidden" name="wpforms[author]" value="' . absint( get_the_author_meta( 'ID' ) ) . '">';
771
 
772
  if ( is_singular() ) {
773
- echo '<input type="hidden" name="wpforms[post_id]" value="' . get_the_ID() . '">';
774
  }
775
 
776
  do_action( 'wpforms_display_submit_before', $form_data );
777
 
778
  printf(
779
  '<button type="submit" name="wpforms[submit]" class="wpforms-submit %s" id="wpforms-submit-%d" value="wpforms-submit" %s>%s</button>',
780
- $classes,
781
- $form_id,
782
  $process,
783
- $submit
784
  );
785
 
 
 
 
 
 
 
 
 
 
 
 
 
 
786
  do_action( 'wpforms_display_submit_after', $form_data );
787
 
788
  echo '</div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
789
  }
790
 
791
  /**
@@ -875,6 +1090,9 @@ class WPForms_Frontend {
875
  * @since 1.0.0
876
  */
877
  public function assets_js() {
 
 
 
878
 
879
  do_action( 'wpforms_frontend_js', $this->forms );
880
 
@@ -964,20 +1182,39 @@ class WPForms_Frontend {
964
  $site_key = wpforms_setting( 'recaptcha-site-key' );
965
  $secret_key = wpforms_setting( 'recaptcha-secret-key' );
966
  $type = wpforms_setting( 'recaptcha-type', 'v2' );
967
- if ( $site_key && $secret_key ) {
968
- $recaptcha_api = apply_filters( 'wpforms_frontend_recaptcha_url', 'https://www.google.com/recaptcha/api.js?onload=wpformsRecaptchaLoad&render=explicit' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
969
  wp_enqueue_script(
970
  'wpforms-recaptcha',
971
  $recaptcha_api,
972
- array( 'jquery' ),
973
- '2.0.0',
974
  true
975
  );
976
- if ( 'invisible' === $type ) {
977
- $recaptch_inline = 'var wpformsRecaptchaLoad = function(){jQuery(".g-recaptcha").each(function(index, el){var recaptchaID = grecaptcha.render(el,{callback:function(){wpformsRecaptchaCallback(el);}},true);jQuery(el).closest("form").find("button[type=submit]").get(0).recaptchaID = recaptchaID;});};';
978
- $recaptch_inline .= 'var wpformsRecaptchaCallback = function(el){var $form = jQuery(el).closest("form");$form.find("button[type=submit]").get(0).recaptchaID = false;$form.submit();};';
 
 
979
  } else {
980
- $recaptch_inline = 'var wpformsRecaptchaLoad = function(){jQuery(".g-recaptcha").each(function(index, el){grecaptcha.render(el,{callback:function(){wpformsRecaptchaCallback(el);}},true);});};';
981
  $recaptch_inline .= 'var wpformsRecaptchaCallback = function(el){jQuery(el).parent().find(".wpforms-recaptcha-hidden").val("1").trigger("change").valid();};';
982
  }
983
  wp_add_inline_script( 'wpforms-recaptcha', $recaptch_inline );
@@ -1002,13 +1239,15 @@ class WPForms_Frontend {
1002
  }
1003
 
1004
  // Special confirmation JS.
1005
- wp_enqueue_script(
1006
- 'wpforms-confirmation',
1007
- WPFORMS_PLUGIN_URL . 'assets/js/wpforms-confirmation.js',
1008
- array( 'jquery' ),
1009
- WPFORMS_VERSION,
1010
- true
1011
- );
 
 
1012
 
1013
  do_action( 'wpforms_frontend_confirmation' );
1014
  }
@@ -1037,7 +1276,7 @@ class WPForms_Frontend {
1037
  */
1038
  public function footer_end() {
1039
 
1040
- if ( empty( $this->forms ) && ! $this->assets_global() ) {
1041
  return;
1042
  }
1043
 
@@ -1070,6 +1309,10 @@ class WPForms_Frontend {
1070
  'locale' => wpforms_get_language_code(),
1071
  'wpforms_plugin_url' => WPFORMS_PLUGIN_URL,
1072
  'gdpr' => wpforms_setting( 'gdpr' ),
 
 
 
 
1073
  );
1074
  // Include payment related strings if needed.
1075
  if ( function_exists( 'wpforms_get_currencies' ) ) {
@@ -1159,42 +1402,6 @@ class WPForms_Frontend {
1159
 
1160
  $atts = shortcode_atts( $defaults, shortcode_atts( $defaults, $atts, 'output' ), 'wpforms' );
1161
 
1162
- // We need to stop shortcode processing in case we are on AMP page.
1163
- if ( wpforms_is_amp() ) {
1164
- $post_id = get_the_ID();
1165
-
1166
- // Display our custom link to non-AMP only if we are on single post/page.
1167
- if ( ! empty( $post_id ) && ! empty( $atts['id'] ) ) {
1168
- /*
1169
- * We need this get param as one of the most popular ampforwp plugin has feature
1170
- * for mobile users being force-redirected to AMP version of a site.
1171
- * This `nonamp` GET param will ensure they will get to the actual page.
1172
- * Other plugins will ignore it.
1173
- */
1174
- $link = trailingslashit( get_permalink( $post_id ) ) . '?nonamp=1#wpforms-' . absint( $atts['id'] );
1175
- $text = apply_filters(
1176
- 'wpforms_frontend_shortcode_amp_text',
1177
- sprintf(
1178
- wp_kses(
1179
- /* translators: %s - URL to a non-amp version of a page with the form. */
1180
- __( '<a href="%s">Go to the full page</a> to view and submit the form.', 'wpforms-lite' ),
1181
- array(
1182
- 'a' => array(
1183
- 'href' => array(),
1184
- ),
1185
- )
1186
- ),
1187
- $link
1188
- )
1189
- );
1190
-
1191
- return '<p class="wpforms-shortcode-amp-text">' . $text . '</p>';
1192
- }
1193
-
1194
- // In case we are not on a post/page - return early with empty output.
1195
- return '';
1196
- }
1197
-
1198
  ob_start();
1199
 
1200
  $this->output( $atts['id'], $atts['title'], $atts['description'] );
35
  * Contains a form confirmation message.
36
  *
37
  * @since 1.4.8
38
+ * @todo Remove in favor of \WPForms_Process::$confirmation_message().
39
  *
40
  * @var string
41
  */
59
 
60
  $this->forms = array();
61
 
62
+ // Filters.
63
+ add_filter( 'amp_skip_post', array( $this, 'amp_skip_post' ) );
64
+
65
  // Actions.
66
  add_action( 'wpforms_frontend_output_success', array( $this, 'confirmation' ), 10, 3 );
67
  add_action( 'wpforms_frontend_output', array( $this, 'head' ), 5, 5 );
85
  add_shortcode( 'wpforms', array( $this, 'shortcode' ) );
86
  }
87
 
88
+ /**
89
+ * Get the amp-state ID for a given form.
90
+ *
91
+ * @param int $form_id Form ID.
92
+ * @return string State ID.
93
+ */
94
+ protected function get_form_amp_state_id( $form_id ) {
95
+ return sprintf( 'wpforms_form_state_%d', $form_id );
96
+ }
97
+
98
+ /**
99
+ * Disable AMP if query param is detected.
100
+ *
101
+ * This allows the full form to be accessible for Pro users or sites
102
+ * that do not have SSL.
103
+ *
104
+ * @since 1.5.3
105
+ *
106
+ * @param bool $skip Skip AMP mode, display full post.
107
+ *
108
+ * @return bool
109
+ */
110
+ public function amp_skip_post( $skip ) {
111
+
112
+ return isset( $_GET['nonamp'] ) ? true : $skip;
113
+ }
114
+
115
  /**
116
  * Primary function to render a form on the frontend.
117
  *
150
  return;
151
  }
152
 
153
+ // We need to stop output processing in case we are on AMP page.
154
+ if ( wpforms_is_amp( false ) && ( ! current_theme_supports( 'amp' ) || apply_filters( 'wpforms_amp_pro', wpforms()->pro ) || ! is_ssl() || ! defined( 'AMP__VERSION' ) || version_compare( AMP__VERSION, '1.2', '<' ) ) ) {
155
+
156
+ $text = apply_filters(
157
+ 'wpforms_frontend_shortcode_amp_text',
158
+ sprintf(
159
+ wp_kses(
160
+ /* translators: %s - URL to a non-amp version of a page with the form. */
161
+ __( '<a href="%s">Go to the full page</a> to view and submit the form.', 'wpforms-lite' ),
162
+ array(
163
+ 'a' => array(
164
+ 'href' => array(),
165
+ ),
166
+ )
167
+ ),
168
+ esc_url( home_url( add_query_arg( 'nonamp', '1' ) . '#wpforms-' . absint( $form->ID ) ) )
169
+ )
170
+ );
171
+
172
+ echo '<p class="wpforms-shortcode-amp-text">' . $text . '</p>';
173
+ return;
174
+ }
175
+
176
  // Add url query var wpforms_form_id to track post_max_size overflows.
177
  if ( in_array( 'file-upload', wp_list_pluck( $form_data['fields'], 'type' ), true ) ) {
178
  $action = add_query_arg( 'wpforms_form_id', $form_id, $action );
228
  }
229
  $classes = wpforms_sanitize_classes( $classes, true );
230
 
231
+ $form_classes = array( 'wpforms-validate', 'wpforms-form' );
232
+
233
+ if ( ! empty( $form_data['settings']['ajax_submit'] ) ) {
234
+ $form_classes[] = 'wpforms-ajax-form';
235
+ }
236
+
237
+ $form_atts = array(
238
+ 'id' => sprintf( 'wpforms-form-%d', absint( $form_id ) ),
239
+ 'class' => $form_classes,
240
+ 'data' => array(
241
+ 'formid' => absint( $form_id ),
242
+ ),
243
+ 'atts' => array(
244
+ 'method' => 'post',
245
+ 'enctype' => 'multipart/form-data',
246
+ 'action' => esc_url( $action ),
247
+ ),
248
  );
249
 
250
+ if ( wpforms_is_amp() ) {
251
+
252
+ // Set submitting state.
253
+ if ( ! isset( $form_atts['atts']['on'] ) ) {
254
+ $form_atts['atts']['on'] = '';
255
+ } else {
256
+ $form_atts['atts']['on'] .= ';';
257
+ }
258
+ $form_atts['atts']['on'] .= sprintf(
259
+ 'submit:AMP.setState( %1$s ); submit-success:AMP.setState( %2$s ); submit-error:AMP.setState( %2$s );',
260
+ wp_json_encode(
261
+ array(
262
+ $this->get_form_amp_state_id( $form_id ) => array(
263
+ 'submitting' => true,
264
+ ),
265
+ )
266
  ),
267
+ wp_json_encode(
268
+ array(
269
+ $this->get_form_amp_state_id( $form_id ) => array(
270
+ 'submitting' => false,
271
+ ),
272
+ )
273
+ )
274
+ );
275
 
276
+ // Upgrade the form to be an amp-form to avoid sanitizer conversion.
277
+ if ( isset( $form_atts['atts']['action'] ) ) {
278
+ $form_atts['atts']['action-xhr'] = $form_atts['atts']['action'];
279
+ unset( $form_atts['atts']['action'] );
280
 
281
+ $form_atts['atts']['verify-xhr'] = $form_atts['atts']['action-xhr'];
282
+ }
283
+ }
284
 
285
+ $form_atts = apply_filters( 'wpforms_frontend_form_atts', $form_atts, $form_data );
286
 
287
+ // Begin to build the output.
288
+ do_action( 'wpforms_frontend_output_container_before', $form_data, $form );
289
+
290
+ printf( '<div class="wpforms-container %s" id="wpforms-%d">', esc_attr( $classes ), absint( $form_id ) );
291
+
292
+ do_action( 'wpforms_frontend_output_form_before', $form_data, $form );
293
+
294
+ echo '<form ' . wpforms_html_attributes( $form_atts['id'], $form_atts['class'], $form_atts['data'], $form_atts['atts'] ) . '>';
295
+
296
+ if ( wpforms_is_amp() ) {
297
+
298
+ $state = array(
299
+ 'submitting' => false,
300
+ );
301
+ printf(
302
+ '<amp-state id="%s"><script type="application/json">%s</script></amp-state>',
303
+ $this->get_form_amp_state_id( $form_id ),
304
+ wp_json_encode( $state )
305
+ );
306
+ }
307
+
308
+
309
+ do_action( 'wpforms_frontend_output', $form_data, null, $title, $description, $errors );
310
+
311
+ echo '</form>';
312
+
313
+ do_action( 'wpforms_frontend_output_form_after', $form_data, $form );
314
+
315
+ echo '</div> <!-- .wpforms-container -->';
316
+
317
+ do_action( 'wpforms_frontend_output_container_after', $form_data, $form );
318
 
319
  // Add form to class property that tracks all forms in a page.
320
  $this->forms[ $form_id ] = $form_data;
321
 
322
  // Optional debug information if WPFORMS_DEBUG is defined.
323
  wpforms_debug_data( $form_data );
324
+
325
+ // After output hook.
326
+ do_action( 'wpforms_frontend_output_after', $form_data, $form );
327
  }
328
 
329
  /**
336
  * @param int $entry_id Entry id.
337
  */
338
  public function confirmation( $form_data, $fields = array(), $entry_id = 0 ) {
339
+ $class = intval( wpforms_setting( 'disable-css', '1' ) ) === 1 ? 'wpforms-confirmation-container-full' : 'wpforms-confirmation-container';
340
 
341
+ // In AMP, just print template.
342
+ if ( wpforms_is_amp() ) {
343
+ $this->assets_confirmation();
344
+ printf( '<div submit-success><template type="amp-mustache"><div class="%s {{#redirecting}}wpforms-redirection-message{{/redirecting}}">{{{message}}}</div></template></div>', esc_attr( $class ) );
345
  return;
346
  }
347
 
 
 
 
348
  if ( empty( $fields ) ) {
349
  $fields = ! empty( $_POST['wpforms']['complete'] ) ? $_POST['wpforms']['complete'] : array();
350
  }
353
  $entry_id = ! empty( $_POST['wpforms']['entry_id'] ) ? $_POST['wpforms']['entry_id'] : 0;
354
  }
355
 
356
+ $confirmation_message = wpforms()->process->get_confirmation_message( $form_data, $fields, $entry_id );
357
+
358
+ // Only display if a confirmation message has been configured.
359
+ if ( empty( $confirmation_message ) ) {
360
+ return;
361
+ }
362
+
363
+ // Load confirmation specific assets.
364
+ $this->assets_confirmation();
365
+
366
+ $class .= $this->confirmation_message_scroll ? ' wpforms-confirmation-scroll' : '';
367
 
368
  printf(
369
  '<div class="%s" id="wpforms-confirmation-%d">%s</div>',
370
  $class,
371
  absint( $form_data['id'] ),
372
+ $confirmation_message
373
  );
374
  }
375
 
405
 
406
  // Output header errors if they exist.
407
  if ( ! empty( $errors['header'] ) ) {
408
+ $this->form_error( 'header', $errors['header'] );
409
  }
410
  }
411
 
570
  */
571
  public function get_field_properties( $field, $form_data, $attributes = array() ) {
572
 
573
+ if ( empty( $attributes ) ) {
574
+ $attributes = $this->get_field_attributes( $field, $form_data );
575
+ }
576
+
577
  // This filter is for backwards compatibility purposes.
578
  $types = array( 'text', 'textarea', 'number', 'email', 'hidden', 'url', 'html', 'divider', 'password', 'phone', 'address', 'checkbox', 'radio' );
579
  if ( in_array( $field['type'], $types, true ) ) {
815
  // Check that recaptcha is configured in the settings.
816
  $site_key = wpforms_setting( 'recaptcha-site-key' );
817
  $secret_key = wpforms_setting( 'recaptcha-secret-key' );
818
+ $type = wpforms_setting( 'recaptcha-type', 'v2' );
819
  if ( ! $site_key || ! $secret_key ) {
820
  return;
821
  }
828
  return;
829
  }
830
 
831
+ if ( wpforms_is_amp() ) {
832
+ if ( 'v3' === $type ) {
833
+ printf(
834
+ '<amp-recaptcha-input name="wpforms[recaptcha]" data-sitekey="%s" data-action="%s" layout="nodisplay"></amp-recaptcha-input>',
835
+ esc_attr( $site_key ),
836
+ esc_attr( 'wpforms_' . $form_data['id'] )
837
+ );
838
+ } elseif ( is_super_admin() ) {
839
+ echo '<div class="wpforms-notice wpforms-warning" style="margin: 20px 0;">';
840
+ printf(
841
+ wp_kses(
842
+ /* translators: %s - URL to reCAPTCHA documentation. */
843
+ __( 'Google reCAPTCHA v2 is not supported by AMP and is currently disabled.<br><a href="%s" rel="noopener noreferrer" target="_blank">Upgrade to reCAPTCHA v3</a> for full AMP support. <br><em>Please note: this message is only displayed to site administrators.</em>', 'wpforms-drip' ),
844
+ array(
845
+ 'a' => array(
846
+ 'href' => array(),
847
+ 'rel' => array(),
848
+ 'target' => array(),
849
+ ),
850
+ 'br' => array(),
851
+ 'em' => array(),
852
+ )
853
+ ),
854
+ 'https://wpforms.com/docs/setup-captcha-wpforms/'
855
+ );
856
+ echo '</div>';
857
+ }
858
+ return; // Only v3 is supported in AMP.
859
+ }
860
+
861
+ if ( 'v3' === $type ) {
862
+ echo '<input type="hidden" name="wpforms[recaptcha]" value="">';
863
+ return;
864
+ }
865
+
866
  $visible = $this->pages ? 'style="display:none;"' : '';
867
  $data = array(
868
  'sitekey' => trim( sanitize_text_field( $site_key ) ),
875
 
876
  echo '<div class="wpforms-recaptcha-container" ' . $visible . '>';
877
 
878
+ echo '<div ' . wpforms_html_attributes( '', array( 'g-recaptcha' ), $data ) . '></div>';
879
 
880
+ if ( 'invisible' !== $type ) {
881
+ echo '<input type="text" name="g-recaptcha-hidden" class="wpforms-recaptcha-hidden" style="position:absolute!important;clip:rect(0,0,0,0)!important;height:1px!important;width:1px!important;border:0!important;overflow:hidden!important;padding:0!important;margin:0!important;" required>';
882
+ }
883
 
884
+ if ( ! empty( $errors['recaptcha'] ) ) {
885
+ $this->form_error( 'recaptcha', $errors['recaptcha'] );
886
+ }
887
 
888
  echo '</div>';
889
  }
904
  $form_id = absint( $form_data['id'] );
905
  $settings = $form_data['settings'];
906
  $submit = apply_filters( 'wpforms_field_submit', $settings['submit_text'], $form_data );
907
+ $process = 'aria-live="assertive" ';
908
  $classes = '';
909
  $visible = $this->pages ? 'style="display:none;"' : '';
910
 
911
  // Check for submit button alt-text.
912
  if ( ! empty( $settings['submit_text_processing'] ) ) {
913
+ if ( wpforms_is_amp() ) {
914
+ $bound_text = sprintf(
915
+ '%s.submitting ? %s : %s',
916
+ $this->get_form_amp_state_id( $form_id ),
917
+ wp_json_encode( $settings['submit_text_processing'], JSON_UNESCAPED_UNICODE ),
918
+ wp_json_encode( $submit, JSON_UNESCAPED_UNICODE )
919
+ );
920
+ $process .= '[text]="' . esc_attr( $bound_text ) . '"';
921
+ } else {
922
+ $process .= 'data-alt-text="' . esc_attr( $settings['submit_text_processing'] ) . '" data-submit-text="' . esc_attr( $submit ) . '"';
923
+ }
924
  }
925
 
926
  // Check user defined submit button classes.
928
  $classes = wpforms_sanitize_classes( $settings['submit_class'] );
929
  }
930
 
931
+ // AMP submit error template.
932
+ if ( wpforms_is_amp() ) {
933
+ echo '<div submit-error><template type="amp-mustache"><div class="wpforms-error-container"><p>{{{message}}}</p></div></template></div>';
934
+ }
935
+
936
  // Output footer errors if they exist.
937
  if ( ! empty( $errors['footer'] ) ) {
938
+ $this->form_error( 'footer', $errors['footer'] );
939
  }
940
 
941
  // Submit button area.
942
  echo '<div class="wpforms-submit-container" ' . $visible . '>';
943
 
944
+ echo '<input type="hidden" name="wpforms[id]" value="' . esc_attr( $form_id ) . '">';
945
 
946
  echo '<input type="hidden" name="wpforms[author]" value="' . absint( get_the_author_meta( 'ID' ) ) . '">';
947
 
948
  if ( is_singular() ) {
949
+ echo '<input type="hidden" name="wpforms[post_id]" value="' . esc_attr( get_the_ID() ) . '">';
950
  }
951
 
952
  do_action( 'wpforms_display_submit_before', $form_data );
953
 
954
  printf(
955
  '<button type="submit" name="wpforms[submit]" class="wpforms-submit %s" id="wpforms-submit-%d" value="wpforms-submit" %s>%s</button>',
956
+ esc_attr( $classes ),
957
+ esc_attr( $form_id ),
958
  $process,
959
+ esc_html( $submit )
960
  );
961
 
962
+ if ( ! empty( $settings['ajax_submit'] ) ) {
963
+ printf(
964
+ '<img src="%s" class="wpforms-submit-spinner" style="display: none;">',
965
+ esc_url(
966
+ apply_filters(
967
+ 'wpforms_display_sumbit_spinner_src',
968
+ WPFORMS_PLUGIN_URL . 'assets/images/submit-spin.svg',
969
+ $form_data
970
+ )
971
+ )
972
+ );
973
+ }
974
+
975
  do_action( 'wpforms_display_submit_after', $form_data );
976
 
977
  echo '</div>';
978
+
979
+ // Load the success template in AMP.
980
+ if ( wpforms_is_amp() ) {
981
+ $this->confirmation( $form_data, $form_data['fields'] );
982
+ }
983
+ }
984
+
985
+ /**
986
+ * Display form error.
987
+ *
988
+ * @since 1.5.3
989
+ *
990
+ * @param string $type Error type.
991
+ * @param string $error Error text.
992
+ */
993
+ public function form_error( $type, $error ) {
994
+
995
+ switch ( $type ) {
996
+ case 'header':
997
+ case 'footer':
998
+ echo '<div class="wpforms-error-container">' . wpforms_sanitize_error( $error ) . '</div>';
999
+ break;
1000
+ case 'recaptcha':
1001
+ echo '<label id="wpforms-field_recaptcha-error" class="wpforms-error">' . wpforms_sanitize_error( $error ) . '</label>';
1002
+ break;
1003
+ }
1004
  }
1005
 
1006
  /**
1090
  * @since 1.0.0
1091
  */
1092
  public function assets_js() {
1093
+ if ( wpforms_is_amp() ) {
1094
+ return;
1095
+ }
1096
 
1097
  do_action( 'wpforms_frontend_js', $this->forms );
1098
 
1182
  $site_key = wpforms_setting( 'recaptcha-site-key' );
1183
  $secret_key = wpforms_setting( 'recaptcha-secret-key' );
1184
  $type = wpforms_setting( 'recaptcha-type', 'v2' );
1185
+ $recaptcha = false;
1186
+
1187
+ foreach ( $this->forms as $form ) {
1188
+ if ( ! empty( $form['settings']['recaptcha'] ) ) {
1189
+ $recaptcha = true;
1190
+ break;
1191
+ }
1192
+ }
1193
+
1194
+ if (
1195
+ ( $recaptcha || $this->assets_global() ) &&
1196
+ ( $secret_key && $site_key )
1197
+ ) {
1198
+ if ( $type === 'v3' ) {
1199
+ $recaptcha_api = 'https://www.google.com/recaptcha/api.js?render=' . $site_key;
1200
+ } else {
1201
+ $recaptcha_api = apply_filters( 'wpforms_frontend_recaptcha_url', 'https://www.google.com/recaptcha/api.js?onload=wpformsRecaptchaLoad&render=explicit' );
1202
+ }
1203
+
1204
  wp_enqueue_script(
1205
  'wpforms-recaptcha',
1206
  $recaptcha_api,
1207
+ $type === 'v3' ? array() : array( 'jquery' ),
1208
+ null,
1209
  true
1210
  );
1211
+ if ( 'v3' === $type ) {
1212
+ $recaptch_inline = 'grecaptcha.ready(function(){grecaptcha.execute("' . esc_html( $site_key ) . '",{action:"wpforms"}).then(function(token){var f=document.getElementsByName("wpforms[recaptcha]");for(var i=0;i<f.length;i++){f[i].value = token;}});});';
1213
+ } elseif ( 'invisible' === $type ) {
1214
+ $recaptch_inline = 'var wpformsRecaptchaLoad = function(){jQuery(".g-recaptcha").each(function(index,el){var recaptchaID = grecaptcha.render(el,{callback:function(){wpformsRecaptchaCallback(el);}},true);jQuery(el).closest("form").find("button[type=submit]").get(0).recaptchaID = recaptchaID;});};';
1215
+ $recaptch_inline .= 'var wpformsRecaptchaCallback = function(el){var $form = jQuery(el).closest("form");if(typeof wpforms.formSubmit === "function"){wpforms.formSubmit($form);}else{$form.find("button[type=submit]").get(0).recaptchaID = false;$form.submit();}};';
1216
  } else {
1217
+ $recaptch_inline = 'var wpformsRecaptchaLoad = function(){jQuery(".g-recaptcha").each(function(index, el){var recaptchaID = grecaptcha.render(el,{callback:function(){wpformsRecaptchaCallback(el);}},true);jQuery(el).attr( "data-recaptcha-id", recaptchaID);});};';
1218
  $recaptch_inline .= 'var wpformsRecaptchaCallback = function(el){jQuery(el).parent().find(".wpforms-recaptcha-hidden").val("1").trigger("change").valid();};';
1219
  }
1220
  wp_add_inline_script( 'wpforms-recaptcha', $recaptch_inline );
1239
  }
1240
 
1241
  // Special confirmation JS.
1242
+ if ( ! wpforms_is_amp() ) {
1243
+ wp_enqueue_script(
1244
+ 'wpforms-confirmation',
1245
+ WPFORMS_PLUGIN_URL . 'assets/js/wpforms-confirmation.js',
1246
+ array( 'jquery' ),
1247
+ WPFORMS_VERSION,
1248
+ true
1249
+ );
1250
+ }
1251
 
1252
  do_action( 'wpforms_frontend_confirmation' );
1253
  }
1276
  */
1277
  public function footer_end() {
1278
 
1279
+ if ( ( empty( $this->forms ) && ! $this->assets_global() ) || wpforms_is_amp() ) {
1280
  return;
1281
  }
1282
 
1309
  'locale' => wpforms_get_language_code(),
1310
  'wpforms_plugin_url' => WPFORMS_PLUGIN_URL,
1311
  'gdpr' => wpforms_setting( 'gdpr' ),
1312
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
1313
+ 'mailcheck_enabled' => (bool) apply_filters( 'wpforms_mailcheck_enabled', true ),
1314
+ 'mailcheck_domains' => array_map( 'sanitize_text_field', (array) apply_filters( 'wpforms_mailcheck_domains', array() ) ),
1315
+ 'mailcheck_toplevel_domains' => array_map( 'sanitize_text_field', (array) apply_filters( 'wpforms_mailcheck_toplevel_domains', array() ) ),
1316
  );
1317
  // Include payment related strings if needed.
1318
  if ( function_exists( 'wpforms_get_currencies' ) ) {
1402
 
1403
  $atts = shortcode_atts( $defaults, shortcode_atts( $defaults, $atts, 'output' ), 'wpforms' );
1404
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1405
  ob_start();
1406
 
1407
  $this->output( $atts['id'], $atts['title'], $atts['description'] );
includes/class-process.php CHANGED
@@ -19,6 +19,13 @@ class WPForms_Process {
19
  */
20
  public $errors;
21
 
 
 
 
 
 
 
 
22
  /**
23
  * Holds formatted fields.
24
  *
@@ -63,6 +70,8 @@ class WPForms_Process {
63
  public function __construct() {
64
 
65
  add_action( 'wp', array( $this, 'listen' ) );
 
 
66
  }
67
 
68
  /**
@@ -83,6 +92,30 @@ class WPForms_Process {
83
 
84
  if ( ! empty( $_POST['wpforms']['id'] ) ) { // phpcs:ignore
85
  $this->process( stripslashes_deep( $_POST['wpforms'] ) ); // phpcs:ignore
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
  }
88
 
@@ -108,42 +141,59 @@ class WPForms_Process {
108
  }
109
 
110
  // Formatted form data for hooks.
111
- $form_data = apply_filters( 'wpforms_process_before_form_data', wpforms_decode( $form->post_content ), $entry );
112
 
113
  // Pre-process/validate hooks and filter.
114
  // Data is not validated or cleaned yet so use with caution.
115
- $entry = apply_filters( 'wpforms_process_before_filter', $entry, $form_data );
116
 
117
- do_action( 'wpforms_process_before', $entry, $form_data );
118
- do_action( "wpforms_process_before_{$form_id}", $entry, $form_data );
119
 
120
  // Validate fields.
121
- foreach ( $form_data['fields'] as $field ) {
122
 
123
- $field_id = $field['id'];
124
- $field_type = $field['type'];
125
  $field_submit = isset( $entry['fields'][ $field_id ] ) ? $entry['fields'][ $field_id ] : '';
126
 
127
- do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data );
128
  }
129
 
130
  // reCAPTCHA check.
131
  $site_key = wpforms_setting( 'recaptcha-site-key', '' );
132
  $secret_key = wpforms_setting( 'recaptcha-secret-key', '' );
 
133
  if (
134
  ! empty( $site_key ) &&
135
  ! empty( $secret_key ) &&
136
- isset( $form_data['settings']['recaptcha'] ) &&
137
- '1' == $form_data['settings']['recaptcha']
 
 
 
138
  ) {
139
- if ( ! empty( $_POST['g-recaptcha-response'] ) ) {
140
- $data = wp_remote_get( 'https://www.google.com/recaptcha/api/siteverify?secret=' . $secret_key . '&response=' . $_POST['g-recaptcha-response'] );
141
- $data = json_decode( wp_remote_retrieve_body( $data ) );
142
- if ( empty( $data->success ) ) {
143
- $this->errors[ $form_id ]['recaptcha'] = esc_html__( 'Incorrect reCAPTCHA, please try again.', 'wpforms-lite' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  }
145
- } else {
146
- $this->errors[ $form_id ]['recaptcha'] = esc_html__( 'reCAPTCHA is required.', 'wpforms-lite' );
147
  }
148
  }
149
 
@@ -171,7 +221,55 @@ class WPForms_Process {
171
  // Don't proceed if there are any errors thus far. We provide a filter
172
  // so that other features, such as conditional logic, have the ability
173
  // to adjust blocking errors.
174
- $errors = apply_filters( 'wpforms_process_initial_errors', $this->errors, $form_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
 
176
  if ( ! empty( $errors[ $form_id ] ) ) {
177
  if ( empty( $this->errors[ $form_id ]['header'] ) ) {
@@ -183,14 +281,14 @@ class WPForms_Process {
183
 
184
  // Validate honeypot early - before actual processing.
185
  if (
186
- ! empty( $form_data['settings']['honeypot'] ) &&
187
- '1' == $form_data['settings']['honeypot'] &&
188
  ! empty( $entry['hp'] )
189
  ) {
190
  $honeypot = esc_html__( 'WPForms honeypot field triggered.', 'wpforms-lite' );
191
  }
192
 
193
- $honeypot = apply_filters( 'wpforms_process_honeypot', $honeypot, $this->fields, $entry, $form_data );
194
 
195
  // If spam - return early.
196
  if ( $honeypot ) {
@@ -200,7 +298,7 @@ class WPForms_Process {
200
  array( $honeypot, $entry ),
201
  array(
202
  'type' => array( 'spam' ),
203
- 'form_id' => $form_data['id'],
204
  )
205
  );
206
 
@@ -208,30 +306,30 @@ class WPForms_Process {
208
  }
209
 
210
  // Pass the form created date into the form data.
211
- $form_data['created'] = $form->post_date;
212
 
213
  // Format fields.
214
- foreach ( (array) $form_data['fields'] as $field ) {
215
 
216
- $field_id = $field['id'];
217
- $field_type = $field['type'];
218
  $field_submit = isset( $entry['fields'][ $field_id ] ) ? $entry['fields'][ $field_id ] : '';
219
 
220
- do_action( "wpforms_process_format_{$field_type}", $field_id, $field_submit, $form_data );
221
  }
222
 
223
  // This hook is for internal purposes and should not be leveraged.
224
- do_action( 'wpforms_process_format_after', $form_data );
225
 
226
  // Process hooks/filter - this is where most addons should hook
227
  // because at this point we have completed all field validation and
228
  // formatted the data.
229
- $this->fields = apply_filters( 'wpforms_process_filter', $this->fields, $entry, $form_data );
230
 
231
- do_action( 'wpforms_process', $this->fields, $entry, $form_data );
232
- do_action( "wpforms_process_{$form_id}", $this->fields, $entry, $form_data );
233
 
234
- $this->fields = apply_filters( 'wpforms_process_after_filter', $this->fields, $entry, $form_data );
235
 
236
  // One last error check - don't proceed if there are any errors.
237
  if ( ! empty( $this->errors[ $form_id ] ) ) {
@@ -242,33 +340,33 @@ class WPForms_Process {
242
  }
243
 
244
  // Success - add entry to database.
245
- $entry_id = $this->entry_save( $this->fields, $entry, $form_data['id'], $form_data );
246
 
247
  // Success - send email notification.
248
- $this->entry_email( $this->fields, $entry, $form_data, $entry_id, 'entry' );
249
 
250
  // Pass completed and formatted fields in POST.
251
  $_POST['wpforms']['complete'] = $this->fields;
252
 
253
  // Pass entry ID in POST.
254
- $_POST['wpforms']['entry_id'] = $entry_id;
255
 
256
  // Logs entry depending on log levels set.
257
  wpforms_log(
258
- $entry_id ? "Entry {$entry_id}" : 'Entry',
259
  $this->fields,
260
  array(
261
  'type' => array( 'entry' ),
262
- 'parent' => $entry_id,
263
- 'form_id' => $form_data['id'],
264
  )
265
  );
266
 
267
  // Post-process hooks.
268
- do_action( 'wpforms_process_complete', $this->fields, $entry, $form_data, $entry_id );
269
- do_action( "wpforms_process_complete_{$form_id}", $this->fields, $entry, $form_data, $entry_id );
270
 
271
- $this->entry_confirmation_redirect( $form_data );
272
  }
273
 
274
  /**
@@ -374,6 +472,7 @@ class WPForms_Process {
374
  if ( ! empty( $confirmations[ $confirmation_id ]['type'] ) && 'message' !== $confirmations[ $confirmation_id ]['type'] ) {
375
 
376
  if ( 'redirect' === $confirmations[ $confirmation_id ]['type'] ) {
 
377
  $url = apply_filters( 'wpforms_process_smart_tags', $confirmations[ $confirmation_id ]['redirect'], $this->form_data, $this->fields, $this->entry_id );
378
  }
379
 
@@ -384,7 +483,22 @@ class WPForms_Process {
384
 
385
  if ( ! empty( $url ) ) {
386
  $url = apply_filters( 'wpforms_process_redirect_url', $url, $this->form_data['id'], $this->fields, $this->form_data, $this->entry_id );
387
- wp_redirect( esc_url_raw( $url ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388
  do_action( 'wpforms_process_redirect', $this->form_data['id'] );
389
  do_action( "wpforms_process_redirect_{$this->form_data['id']}", $this->form_data['id'] );
390
  exit;
@@ -392,7 +506,7 @@ class WPForms_Process {
392
 
393
  // Pass a message to a frontend if no redirection happened.
394
  if ( ! empty( $confirmations[ $confirmation_id ]['type'] ) && 'message' === $confirmations[ $confirmation_id ]['type'] ) {
395
- wpforms()->frontend->confirmation_message = $confirmations[ $confirmation_id ]['message'];
396
 
397
  if ( ! empty( $confirmations[ $confirmation_id ]['message_scroll'] ) ) {
398
  wpforms()->frontend->confirmation_message_scroll = true;
@@ -400,6 +514,23 @@ class WPForms_Process {
400
  }
401
  }
402
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
  /**
404
  * Catch the post_max_size overflow.
405
  *
@@ -546,4 +677,133 @@ class WPForms_Process {
546
 
547
  return $this->entry_id;
548
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
549
  }
19
  */
20
  public $errors;
21
 
22
+ /**
23
+ * Confirmation message.
24
+ *
25
+ * @var string
26
+ */
27
+ public $confirmation_message;
28
+
29
  /**
30
  * Holds formatted fields.
31
  *
70
  public function __construct() {
71
 
72
  add_action( 'wp', array( $this, 'listen' ) );
73
+ add_action( 'wp_ajax_wpforms_submit', array( $this, 'ajax_submit' ) );
74
+ add_action( 'wp_ajax_nopriv_wpforms_submit', array( $this, 'ajax_submit' ) );
75
  }
76
 
77
  /**
92
 
93
  if ( ! empty( $_POST['wpforms']['id'] ) ) { // phpcs:ignore
94
  $this->process( stripslashes_deep( $_POST['wpforms'] ) ); // phpcs:ignore
95
+
96
+ $form_id = wp_unslash( $_POST['wpforms']['id'] );
97
+ if ( wpforms_is_amp() ) {
98
+ // Send 400 Bad Request when there are errors.
99
+ if ( ! empty( $this->errors[ $form_id ] ) ) {
100
+ $message = $this->errors[ $form_id ]['header'];
101
+ if ( ! empty( $this->errors[ $form_id ]['footer'] ) ) {
102
+ $message .= ' ' . $this->errors[ $form_id ]['footer'];
103
+ }
104
+ wp_send_json(
105
+ array(
106
+ 'message' => $message,
107
+ ),
108
+ 400
109
+ );
110
+ } else {
111
+ wp_send_json(
112
+ array(
113
+ 'message' => $this->get_confirmation_message( $this->form_data, $this->fields, $this->entry_id ),
114
+ ),
115
+ 200
116
+ );
117
+ }
118
+ }
119
  }
120
  }
121
 
141
  }
142
 
143
  // Formatted form data for hooks.
144
+ $this->form_data = apply_filters( 'wpforms_process_before_form_data', wpforms_decode( $form->post_content ), $entry );
145
 
146
  // Pre-process/validate hooks and filter.
147
  // Data is not validated or cleaned yet so use with caution.
148
+ $entry = apply_filters( 'wpforms_process_before_filter', $entry, $this->form_data );
149
 
150
+ do_action( 'wpforms_process_before', $entry, $this->form_data );
151
+ do_action( "wpforms_process_before_{$form_id}", $entry, $this->form_data );
152
 
153
  // Validate fields.
154
+ foreach ( $this->form_data['fields'] as $field_properties ) {
155
 
156
+ $field_id = $field_properties['id'];
157
+ $field_type = $field_properties['type'];
158
  $field_submit = isset( $entry['fields'][ $field_id ] ) ? $entry['fields'][ $field_id ] : '';
159
 
160
+ do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $this->form_data );
161
  }
162
 
163
  // reCAPTCHA check.
164
  $site_key = wpforms_setting( 'recaptcha-site-key', '' );
165
  $secret_key = wpforms_setting( 'recaptcha-secret-key', '' );
166
+ $type = wpforms_setting( 'recaptcha-type', 'v2' );
167
  if (
168
  ! empty( $site_key ) &&
169
  ! empty( $secret_key ) &&
170
+ isset( $this->form_data['settings']['recaptcha'] ) &&
171
+ '1' == $this->form_data['settings']['recaptcha'] &&
172
+ ! isset( $_POST['__amp_form_verify'] ) // phpcs:ignore WordPress.Security.NonceVerification.Missing -- No need to check reCAPTCHA until form is submitted.
173
+ &&
174
+ ( 'v3' === $type || ! wpforms_is_amp() ) // AMP requires v3.
175
  ) {
176
+ $error = wpforms_setting( 'recaptcha-fail-msg', esc_html__( 'Google reCAPTCHA verification failed, please try again later.', 'wpforms-lite' ) );
177
+ $token = ! empty( $_POST['g-recaptcha-response'] ) ? $_POST['g-recaptcha-response'] : false;
178
+
179
+ if ( 'v3' === $type ) {
180
+ $token = ! empty( $_POST['wpforms']['recaptcha'] ) ? $_POST['wpforms']['recaptcha'] : false;
181
+ }
182
+
183
+ $response = json_decode( wp_remote_retrieve_body( wp_remote_get( 'https://www.google.com/recaptcha/api/siteverify?secret=' . $secret_key . '&response=' . $token ) ) );
184
+
185
+ if (
186
+ empty( $response->success ) ||
187
+ ( 'v3' === $type && $response->score <= wpforms_setting( 'recaptcha-v3-threshold', '0.4' ) )
188
+ ) {
189
+ if ( 'v3' === $type ) {
190
+ if ( isset( $response->score ) ) {
191
+ $error .= ' (' . esc_html( $response->score ) . ')';
192
+ }
193
+ $this->errors[ $form_id ]['footer'] = $error;
194
+ } else {
195
+ $this->errors[ $form_id ]['recaptcha'] = $error;
196
  }
 
 
197
  }
198
  }
199
 
221
  // Don't proceed if there are any errors thus far. We provide a filter
222
  // so that other features, such as conditional logic, have the ability
223
  // to adjust blocking errors.
224
+ $errors = apply_filters( 'wpforms_process_initial_errors', $this->errors, $this->form_data );
225
+
226
+ if ( isset( $_POST['__amp_form_verify'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
227
+ if ( empty( $errors[ $form_id ] ) ) {
228
+ wp_send_json( array(), 200 );
229
+ } else {
230
+ $verify_errors = array();
231
+
232
+ foreach ( $errors[ $form_id ] as $field_id => $error_fields ) {
233
+ $field = $this->form_data['fields'][ $field_id ];
234
+ $field_properties = wpforms()->frontend->get_field_properties( $field, $this->form_data );
235
+
236
+ if ( is_string( $error_fields ) ) {
237
+
238
+ if ( 'checkbox' === $field['type'] || 'radio' === $field['type'] || 'select' === $field['type'] ) {
239
+ $first = current( $field_properties['inputs'] );
240
+ $name = $first['attr']['name'];
241
+ } elseif ( isset( $field_properties['inputs']['primary']['attr']['name'] ) ) {
242
+ $name = $field_properties['inputs']['primary']['attr']['name'];
243
+ }
244
+
245
+ $verify_errors[] = array(
246
+ 'name' => $name,
247
+ 'message' => $error_fields,
248
+ );
249
+ } else {
250
+ foreach ( $error_fields as $error_field => $error_message ) {
251
+
252
+ if ( isset( $field_properties['inputs'][ $error_field ]['attr']['name'] ) ) {
253
+ $name = $field_properties['inputs'][ $error_field ]['attr']['name'];
254
+ }
255
+
256
+ $verify_errors[] = array(
257
+ 'name' => $name,
258
+ 'message' => $error_message,
259
+ );
260
+ }
261
+ }
262
+ }
263
+
264
+ wp_send_json(
265
+ array(
266
+ 'verifyErrors' => $verify_errors,
267
+ ),
268
+ 400
269
+ );
270
+ }
271
+ return;
272
+ }
273
 
274
  if ( ! empty( $errors[ $form_id ] ) ) {
275
  if ( empty( $this->errors[ $form_id ]['header'] ) ) {
281
 
282
  // Validate honeypot early - before actual processing.
283
  if (
284
+ ! empty( $this->form_data['settings']['honeypot'] ) &&
285
+ '1' == $this->form_data['settings']['honeypot'] &&
286
  ! empty( $entry['hp'] )
287
  ) {
288
  $honeypot = esc_html__( 'WPForms honeypot field triggered.', 'wpforms-lite' );
289
  }
290
 
291
+ $honeypot = apply_filters( 'wpforms_process_honeypot', $honeypot, $this->fields, $entry, $this->form_data );
292
 
293
  // If spam - return early.
294
  if ( $honeypot ) {
298
  array( $honeypot, $entry ),
299
  array(
300
  'type' => array( 'spam' ),
301
+ 'form_id' => $this->form_data['id'],
302
  )
303
  );
304
 
306
  }
307
 
308
  // Pass the form created date into the form data.
309
+ $this->form_data['created'] = $form->post_date;
310
 
311
  // Format fields.
312
+ foreach ( (array) $this->form_data['fields'] as $field_properties ) {
313
 
314
+ $field_id = $field_properties['id'];
315
+ $field_type = $field_properties['type'];
316
  $field_submit = isset( $entry['fields'][ $field_id ] ) ? $entry['fields'][ $field_id ] : '';
317
 
318
+ do_action( "wpforms_process_format_{$field_type}", $field_id, $field_submit, $this->form_data );
319
  }
320
 
321
  // This hook is for internal purposes and should not be leveraged.
322
+ do_action( 'wpforms_process_format_after', $this->form_data );
323
 
324
  // Process hooks/filter - this is where most addons should hook
325
  // because at this point we have completed all field validation and
326
  // formatted the data.
327
+ $this->fields = apply_filters( 'wpforms_process_filter', $this->fields, $entry, $this->form_data );
328
 
329
+ do_action( 'wpforms_process', $this->fields, $entry, $this->form_data );
330
+ do_action( "wpforms_process_{$form_id}", $this->fields, $entry, $this->form_data );
331
 
332
+ $this->fields = apply_filters( 'wpforms_process_after_filter', $this->fields, $entry, $this->form_data );
333
 
334
  // One last error check - don't proceed if there are any errors.
335
  if ( ! empty( $this->errors[ $form_id ] ) ) {
340
  }
341
 
342
  // Success - add entry to database.
343
+ $this->entry_id = $this->entry_save( $this->fields, $entry, $this->form_data['id'], $this->form_data );
344
 
345
  // Success - send email notification.
346
+ $this->entry_email( $this->fields, $entry, $this->form_data, $this->entry_id, 'entry' );
347
 
348
  // Pass completed and formatted fields in POST.
349
  $_POST['wpforms']['complete'] = $this->fields;
350
 
351
  // Pass entry ID in POST.
352
+ $_POST['wpforms']['entry_id'] = $this->entry_id;
353
 
354
  // Logs entry depending on log levels set.
355
  wpforms_log(
356
+ $this->entry_id ? "Entry {$this->entry_id}" : 'Entry',
357
  $this->fields,
358
  array(
359
  'type' => array( 'entry' ),
360
+ 'parent' => $this->entry_id,
361
+ 'form_id' => $this->form_data['id'],
362
  )
363
  );
364
 
365
  // Post-process hooks.
366
+ do_action( 'wpforms_process_complete', $this->fields, $entry, $this->form_data, $this->entry_id );
367
+ do_action( "wpforms_process_complete_{$form_id}", $this->fields, $entry, $this->form_data, $this->entry_id );
368
 
369
+ $this->entry_confirmation_redirect( $this->form_data );
370
  }
371
 
372
  /**
472
  if ( ! empty( $confirmations[ $confirmation_id ]['type'] ) && 'message' !== $confirmations[ $confirmation_id ]['type'] ) {
473
 
474
  if ( 'redirect' === $confirmations[ $confirmation_id ]['type'] ) {
475
+ add_filter( 'wpforms_field_smart_tag_value', 'rawurlencode' );
476
  $url = apply_filters( 'wpforms_process_smart_tags', $confirmations[ $confirmation_id ]['redirect'], $this->form_data, $this->fields, $this->entry_id );
477
  }
478
 
483
 
484
  if ( ! empty( $url ) ) {
485
  $url = apply_filters( 'wpforms_process_redirect_url', $url, $this->form_data['id'], $this->fields, $this->form_data, $this->entry_id );
486
+ if ( wpforms_is_amp() ) {
487
+ /** This filter is documented in wp-includes/pluggable.php */
488
+ $url = apply_filters( 'wp_redirect', $url, 302 );
489
+ $url = wp_sanitize_redirect( $url );
490
+ header( sprintf( 'AMP-Redirect-To: %s', $url ) );
491
+ header( 'Access-Control-Expose-Headers: AMP-Redirect-To', false );
492
+ wp_send_json(
493
+ array(
494
+ 'message' => __( 'Redirecting…', 'wpforms-lite' ),
495
+ 'redirecting' => true,
496
+ ),
497
+ 200
498
+ );
499
+ } else {
500
+ wp_redirect( esc_url_raw( $url ) ); // phpcs:ignore
501
+ }
502
  do_action( 'wpforms_process_redirect', $this->form_data['id'] );
503
  do_action( "wpforms_process_redirect_{$this->form_data['id']}", $this->form_data['id'] );
504
  exit;
506
 
507
  // Pass a message to a frontend if no redirection happened.
508
  if ( ! empty( $confirmations[ $confirmation_id ]['type'] ) && 'message' === $confirmations[ $confirmation_id ]['type'] ) {
509
+ $this->confirmation_message = $confirmations[ $confirmation_id ]['message'];
510
 
511
  if ( ! empty( $confirmations[ $confirmation_id ]['message_scroll'] ) ) {
512
  wpforms()->frontend->confirmation_message_scroll = true;
514
  }
515
  }
516
 
517
+ /**
518
+ * Get confirmation message.
519
+ *
520
+ * @param array $form_data Form data and settings.
521
+ * @param array $fields Sanitized field data.
522
+ * @param int $entry_id Entry id.
523
+ * @return string Confirmation message.
524
+ */
525
+ public function get_confirmation_message( $form_data, $fields, $entry_id ) {
526
+ if ( empty( $this->confirmation_message ) ) {
527
+ return '';
528
+ }
529
+ $confirmation_message = apply_filters( 'wpforms_process_smart_tags', $this->confirmation_message, $form_data, $fields, $entry_id );
530
+ $confirmation_message = apply_filters( 'wpforms_frontend_confirmation_message', wpautop( $confirmation_message ), $form_data, $fields, $entry_id );
531
+ return $confirmation_message;
532
+ }
533
+
534
  /**
535
  * Catch the post_max_size overflow.
536
  *
677
 
678
  return $this->entry_id;
679
  }
680
+
681
+ /**
682
+ * Process AJAX form submit.
683
+ *
684
+ * @since 1.5.3
685
+ */
686
+ public function ajax_submit() {
687
+
688
+ $form_id = isset( $_POST['wpforms']['id'] ) ? absint( $_POST['wpforms']['id'] ) : 0; // phpcs:ignore
689
+
690
+ if ( empty( $form_id ) ) {
691
+ wp_send_json_error();
692
+ }
693
+
694
+ add_filter( 'wpforms_process_redirect_url', array( $this, 'ajax_process_redirect' ), 999, 2 );
695
+
696
+ do_action( 'wpforms_ajax_submit_before_processing', $form_id );
697
+
698
+ // If redirect happens in listen(), ajax_process_redirect() gets executed.
699
+ // The code below listen() runs only if no redirect happened.
700
+ $this->listen();
701
+
702
+ $form_data = $this->form_data;
703
+
704
+ if ( empty( $form_data ) ) {
705
+ $form_data = wpforms()->form->get( $form_id, array( 'content_only' => true ) );
706
+ $form_data = apply_filters( 'wpforms_frontend_form_data', $form_data );
707
+ }
708
+
709
+ if ( ! empty( $this->errors[ $form_id ] ) ) {
710
+ $this->ajax_process_errors( $form_id, $form_data );
711
+ wp_send_json_error();
712
+ }
713
+
714
+ ob_start();
715
+
716
+ wpforms()->frontend->confirmation( $form_data );
717
+
718
+ $response = apply_filters( 'wpforms_ajax_submit_success_response', array( 'confirmation' => ob_get_clean() ), $form_id, $form_data );
719
+
720
+ do_action( 'wpforms_ajax_submit_completed', $form_id, $response );
721
+
722
+ wp_send_json_success( $response );
723
+ }
724
+
725
+ /**
726
+ * Process AJAX errors.
727
+ *
728
+ * @since 1.5.3
729
+ * @todo This should be re-used/combined for AMP verify-xhr requests.
730
+ *
731
+ * @param int $form_id Form ID.
732
+ * @param array $form_data Form data and settings.
733
+ */
734
+ protected function ajax_process_errors( $form_id, $form_data ) {
735
+
736
+ $errors = isset( $this->errors[ $form_id ] ) ? $this->errors[ $form_id ] : array();
737
+
738
+ $errors = apply_filters( 'wpforms_ajax_submit_errors', $errors, $form_id, $form_data );
739
+
740
+ if ( empty( $errors ) ) {
741
+ wp_send_json_error();
742
+ }
743
+
744
+ // General errors are errors that cannot be populated with jQuery Validate plugin.
745
+ $general_errors = array_intersect_key( $errors, array_flip( array( 'header', 'footer', 'recaptcha' ) ) );
746
+
747
+ foreach ( $general_errors as $key => $error ) {
748
+ ob_start();
749
+ wpforms()->frontend->form_error( $key, $error );
750
+ $general_errors[ $key ] = ob_get_clean();
751
+ }
752
+
753
+ $fields = isset( $form_data['fields'] ) ? $form_data['fields'] : array();
754
+
755
+ // Get registered fields errors only.
756
+ $field_errors = array_intersect_key( $errors, $fields );
757
+
758
+ // Transform field ids to field names for jQuery Validate plugin.
759
+ foreach ( $field_errors as $key => $error ) {
760
+
761
+ $props = wpforms()->frontend->get_field_properties( $fields[ $key ], $form_data );
762
+ $name = isset( $props['inputs']['primary']['attr']['name'] ) ? $props['inputs']['primary']['attr']['name'] : '';
763
+
764
+ if ( $name ) {
765
+ $field_errors[ $name ] = $error;
766
+ }
767
+
768
+ unset( $field_errors[ $key ] );
769
+ }
770
+
771
+ $response = array();
772
+
773
+ if ( $general_errors ) {
774
+ $response['errors']['general'] = $general_errors;
775
+ }
776
+
777
+ if ( $field_errors ) {
778
+ $response['errors']['field'] = $field_errors;
779
+ }
780
+
781
+ $response = apply_filters( 'wpforms_ajax_submit_errors_response', $response, $form_id, $form_data );
782
+
783
+ do_action( 'wpforms_ajax_submit_completed', $form_id, $response );
784
+
785
+ wp_send_json_error( $response );
786
+ }
787
+
788
+ /**
789
+ * Process AJAX redirect.
790
+ *
791
+ * @since 1.5.3
792
+ *
793
+ * @param string $url Redirect URL.
794
+ * @param int $form_id Form ID.
795
+ */
796
+ public function ajax_process_redirect( $url, $form_id ) {
797
+
798
+ $response = array(
799
+ 'form_id' => $form_id,
800
+ 'redirect_url' => $url,
801
+ );
802
+
803
+ $response = apply_filters( 'wpforms_ajax_submit_redirect', $response, $form_id, $url );
804
+
805
+ do_action( 'wpforms_ajax_submit_completed', $form_id, $response );
806
+
807
+ wp_send_json_success( $response );
808
+ }
809
  }
includes/class-smart-tags.php CHANGED
@@ -299,6 +299,7 @@ class WPForms_Smart_Tags {
299
  $field_id = $field_parts[0];
300
  $field_key = ! empty( $field_parts[1] ) ? sanitize_key( $field_parts[1] ) : 'value';
301
  $value = ! empty( $fields[ $field_id ][ $field_key ] ) ? wpforms_sanitize_textarea_field( $fields[ $field_id ][ $field_key ] ) : '';
 
302
  $content = str_replace( '{field_id="' . $parts . '"}', $value, $content );
303
  }
304
  }
299
  $field_id = $field_parts[0];
300
  $field_key = ! empty( $field_parts[1] ) ? sanitize_key( $field_parts[1] ) : 'value';
301
  $value = ! empty( $fields[ $field_id ][ $field_key ] ) ? wpforms_sanitize_textarea_field( $fields[ $field_id ][ $field_key ] ) : '';
302
+ $value = apply_filters( 'wpforms_field_smart_tag_value', $value );
303
  $content = str_replace( '{field_id="' . $parts . '"}', $value, $content );
304
  }
305
  }
includes/fields/class-checkbox.php CHANGED
@@ -440,11 +440,26 @@ class WPForms_Field_Checkbox extends WPForms_Field {
440
  * @param array $form_data Form data and settings.
441
  */
442
  public function field_display( $field, $deprecated, $form_data ) {
 
443
 
444
  // Define data.
445
  $container = $field['properties']['input_container'];
446
  $choices = $field['properties']['inputs'];
447
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
448
  printf(
449
  '<ul %s>',
450
  wpforms_html_attributes( $container['id'], $container['class'], $container['data'] )
@@ -452,6 +467,15 @@ class WPForms_Field_Checkbox extends WPForms_Field {
452
 
453
  foreach ( $choices as $key => $choice ) {
454
 
 
 
 
 
 
 
 
 
 
455
  // If the field is required, has the label hidden, and has
456
  // disclaimer mode enabled, so the required status in choice
457
  // label.
@@ -465,7 +489,24 @@ class WPForms_Field_Checkbox extends WPForms_Field {
465
  wpforms_html_attributes( $choice['container']['id'], $choice['container']['class'], $choice['container']['data'], $choice['container']['attr'] )
466
  );
467
 
468
- if ( empty( $field['dynamic_choices'] ) && ! empty( $field['choices_images'] ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
469
 
470
  // Image choices.
471
  printf(
@@ -486,10 +527,20 @@ class WPForms_Field_Checkbox extends WPForms_Field {
486
  echo '<br>';
487
  }
488
 
 
 
 
 
 
 
 
 
 
 
489
  printf(
490
  '<input type="checkbox" %s %s %s>',
491
  wpforms_html_attributes( $choice['id'], $choice['class'], $choice['data'], $choice['attr'] ),
492
- esc_attr( $choice['required'] ),
493
  checked( '1', $choice['default'], false )
494
  );
495
 
@@ -503,7 +554,7 @@ class WPForms_Field_Checkbox extends WPForms_Field {
503
  printf(
504
  '<input type="checkbox" %s %s %s>',
505
  wpforms_html_attributes( $choice['id'], $choice['class'], $choice['data'], $choice['attr'] ),
506
- esc_attr( $choice['required'] ),
507
  checked( '1', $choice['default'], false )
508
  );
509
 
@@ -533,18 +584,17 @@ class WPForms_Field_Checkbox extends WPForms_Field {
533
  public function validate( $field_id, $field_submit, $form_data ) {
534
 
535
  $field_submit = (array) $field_submit;
536
- $form_id = $form_data['id'];
537
  $choice_limit = empty( $form_data['fields'][ $field_id ]['choice_limit'] ) ? 0 : (int) $form_data['fields'][ $field_id ]['choice_limit'];
538
  $count_choices = count( $field_submit );
539
 
540
  if ( $choice_limit > 0 && $count_choices > $choice_limit ) {
541
  // Generating the error.
542
  $error = wpforms_setting( 'validation-check-limit', esc_html__( 'You have exceeded the number of allowed selections: {#}.', 'wpforms-lite' ) );
543
- $error = str_replace( '{#}', $choice_limit, wpforms()->process->errors[ $form_id ][ $field_id ] );
544
  }
545
 
546
  // Basic required check - If field is marked as required, check for entry data.
547
- if ( ! empty( $form_data['fields'][ $field_id ]['required'] ) && empty( $field_submit ) ) {
548
  $error = wpforms_get_required_label();
549
  }
550
 
440
  * @param array $form_data Form data and settings.
441
  */
442
  public function field_display( $field, $deprecated, $form_data ) {
443
+ $using_image_choices = empty( $field['dynamic_choices'] ) && ! empty( $field['choices_images'] );
444
 
445
  // Define data.
446
  $container = $field['properties']['input_container'];
447
  $choices = $field['properties']['inputs'];
448
 
449
+ $amp_state_id = '';
450
+ if ( wpforms_is_amp() && $using_image_choices ) {
451
+ $amp_state_id = str_replace( '-', '_', sanitize_key( $container['id'] ) ) . '_state';
452
+ $state = array();
453
+ foreach ( $choices as $key => $choice ) {
454
+ $state[ $choice['id'] ] = ! empty( $choice['default'] );
455
+ }
456
+ printf(
457
+ '<amp-state id="%s"><script type="application/json">%s</script></amp-state>',
458
+ esc_attr( $amp_state_id ),
459
+ wp_json_encode( $state )
460
+ );
461
+ }
462
+
463
  printf(
464
  '<ul %s>',
465
  wpforms_html_attributes( $container['id'], $container['class'], $container['data'] )
467
 
468
  foreach ( $choices as $key => $choice ) {
469
 
470
+ if ( wpforms_is_amp() && $using_image_choices ) {
471
+ $choice['container']['attr']['[class]'] = sprintf(
472
+ '%s + ( %s[%s] ? " wpforms-selected" : "")',
473
+ wp_json_encode( implode( ' ', $choice['container']['class'] ) ),
474
+ $amp_state_id,
475
+ wp_json_encode( $choice['id'] )
476
+ );
477
+ }
478
+
479
  // If the field is required, has the label hidden, and has
480
  // disclaimer mode enabled, so the required status in choice
481
  // label.
489
  wpforms_html_attributes( $choice['container']['id'], $choice['container']['class'], $choice['container']['data'], $choice['container']['attr'] )
490
  );
491
 
492
+ // The required constraint in HTML5 form validation does not work with checkbox groups, so omit in AMP.
493
+ $required_attr = wpforms_is_amp() && count( $choices ) > 1 ? '' : $choice['required'];
494
+
495
+ if ( $using_image_choices ) {
496
+
497
+ // Make sure the image choices are keyboard-accessible.
498
+ $choice['label']['attr']['tabindex'] = 0;
499
+
500
+ if ( wpforms_is_amp() ) {
501
+ $choice['label']['attr']['on'] = sprintf(
502
+ 'tap:AMP.setState({ %s: { %s: ! %s[%s] } })',
503
+ wp_json_encode( $amp_state_id ),
504
+ wp_json_encode( $choice['id'] ),
505
+ $amp_state_id,
506
+ wp_json_encode( $choice['id'] )
507
+ );
508
+ $choice['label']['attr']['role'] = 'button';
509
+ }
510
 
511
  // Image choices.
512
  printf(
527
  echo '<br>';
528
  }
529
 
530
+ $choice['attr']['tabindex'] = '-1';
531
+
532
+ if ( wpforms_is_amp() ) {
533
+ $choice['attr']['[checked]'] = sprintf(
534
+ '%s[%s]',
535
+ $amp_state_id,
536
+ wp_json_encode( $choice['id'] )
537
+ );
538
+ }
539
+
540
  printf(
541
  '<input type="checkbox" %s %s %s>',
542
  wpforms_html_attributes( $choice['id'], $choice['class'], $choice['data'], $choice['attr'] ),
543
+ esc_attr( $required_attr ),
544
  checked( '1', $choice['default'], false )
545
  );
546
 
554
  printf(
555
  '<input type="checkbox" %s %s %s>',
556
  wpforms_html_attributes( $choice['id'], $choice['class'], $choice['data'], $choice['attr'] ),
557
+ esc_attr( $required_attr ),
558
  checked( '1', $choice['default'], false )
559
  );
560
 
584
  public function validate( $field_id, $field_submit, $form_data ) {
585
 
586
  $field_submit = (array) $field_submit;
 
587
  $choice_limit = empty( $form_data['fields'][ $field_id ]['choice_limit'] ) ? 0 : (int) $form_data['fields'][ $field_id ]['choice_limit'];
588
  $count_choices = count( $field_submit );
589
 
590
  if ( $choice_limit > 0 && $count_choices > $choice_limit ) {
591
  // Generating the error.
592
  $error = wpforms_setting( 'validation-check-limit', esc_html__( 'You have exceeded the number of allowed selections: {#}.', 'wpforms-lite' ) );
593
+ $error = str_replace( '{#}', $choice_limit, $error );
594
  }
595
 
596
  // Basic required check - If field is marked as required, check for entry data.
597
+ if ( ! empty( $form_data['fields'][ $field_id ]['required'] ) && ( empty( $field_submit ) ) || ( 1 === count( $field_submit ) && empty( $field_submit[0] ) ) ) {
598
  $error = wpforms_get_required_label();
599
  }
600
 
includes/fields/class-email.php CHANGED
@@ -404,6 +404,24 @@ class WPForms_Field_Email extends WPForms_Field {
404
  );
405
  }
406
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
407
 
408
  }
409
 
404
  );
405
  }
406
 
407
+ /**
408
+ * Validates field on form submit.
409
+ *
410
+ * @param int $field_id
411
+ * @param array $field_submit
412
+ * @param array $form_data
413
+ */
414
+ public function validate( $field_id, $field_submit, $form_data ) {
415
+ $form_id = $form_data['id'];
416
+
417
+ parent::validate( $field_id, $field_submit, $form_data );
418
+
419
+ if ( ! empty( $field_submit['primary'] ) && ! is_email( $field_submit['primary'] ) ) {
420
+ wpforms()->process->errors[ $form_id ][ $field_id ]['primary'] = esc_html__( 'The provided email is not valid.', 'wpforms-lite' );
421
+ } elseif ( isset( $field_submit['primary'] ) && isset( $field_submit['secondary'] ) && $field_submit['secondary'] !== $field_submit['primary'] ) {
422
+ wpforms()->process->errors[ $form_id ][ $field_id ]['secondary'] = esc_html__( 'The provided emails do not match.', 'wpforms-lite' );
423
+ }
424
+ }
425
 
426
  }
427
 
includes/fields/class-radio.php CHANGED
@@ -345,11 +345,31 @@ class WPForms_Field_Radio extends WPForms_Field {
345
  * @param array $form_data Form data and settings.
346
  */
347
  public function field_display( $field, $deprecated, $form_data ) {
 
348
 
349
  // Define data.
350
  $container = $field['properties']['input_container'];
351
  $choices = $field['properties']['inputs'];
352
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
353
  printf(
354
  '<ul %s>',
355
  wpforms_html_attributes( $container['id'], $container['class'], $container['data'] )
@@ -357,12 +377,32 @@ class WPForms_Field_Radio extends WPForms_Field {
357
 
358
  foreach ( $choices as $key => $choice ) {
359
 
 
 
 
 
 
 
 
 
 
360
  printf(
361
  '<li %s>',
362
  wpforms_html_attributes( $choice['container']['id'], $choice['container']['class'], $choice['container']['data'], $choice['container']['attr'] )
363
  ); // WPCS: XSS ok.
364
 
365
- if ( empty( $field['dynamic_choices'] ) && ! empty( $field['choices_images'] ) ) {
 
 
 
 
 
 
 
 
 
 
 
366
 
367
  // Image choices.
368
  printf(
@@ -383,6 +423,16 @@ class WPForms_Field_Radio extends WPForms_Field {
383
  echo '<br>';
384
  }
385
 
 
 
 
 
 
 
 
 
 
 
386
  printf(
387
  '<input type="radio" %s %s %s>',
388
  wpforms_html_attributes( $choice['id'], $choice['class'], $choice['data'], $choice['attr'] ),
345
  * @param array $form_data Form data and settings.
346
  */
347
  public function field_display( $field, $deprecated, $form_data ) {
348
+ $using_image_choices = empty( $field['dynamic_choices'] ) && ! empty( $field['choices_images'] );
349
 
350
  // Define data.
351
  $container = $field['properties']['input_container'];
352
  $choices = $field['properties']['inputs'];
353
 
354
+ $amp_state_id = '';
355
+ if ( wpforms_is_amp() && $using_image_choices ) {
356
+ $amp_state_id = str_replace( '-', '_', sanitize_key( $container['id'] ) ) . '_state';
357
+ $state = array(
358
+ 'selected' => null,
359
+ );
360
+ foreach ( $choices as $key => $choice ) {
361
+ if ( $choice['default'] ) {
362
+ $state['selected'] = $choice['attr']['value'];
363
+ break;
364
+ }
365
+ }
366
+ printf(
367
+ '<amp-state id="%s"><script type="application/json">%s</script></amp-state>',
368
+ esc_attr( $amp_state_id ),
369
+ wp_json_encode( $state )
370
+ );
371
+ }
372
+
373
  printf(
374
  '<ul %s>',
375
  wpforms_html_attributes( $container['id'], $container['class'], $container['data'] )
377
 
378
  foreach ( $choices as $key => $choice ) {
379
 
380
+ if ( wpforms_is_amp() && $using_image_choices ) {
381
+ $choice['container']['attr']['[class]'] = sprintf(
382
+ '%s + ( %s == %s ? " wpforms-selected" : "")',
383
+ wp_json_encode( implode( ' ', $choice['container']['class'] ) ),
384
+ $amp_state_id,
385
+ wp_json_encode( $choice['attr']['value'] )
386
+ );
387
+ }
388
+
389
  printf(
390
  '<li %s>',
391
  wpforms_html_attributes( $choice['container']['id'], $choice['container']['class'], $choice['container']['data'], $choice['container']['attr'] )
392
  ); // WPCS: XSS ok.
393
 
394
+ if ( $using_image_choices ) {
395
+
396
+ // Make sure the image choices are keyboard-accessible.
397
+ $choice['label']['attr']['tabindex'] = 0;
398
+
399
+ if ( wpforms_is_amp() ) {
400
+ $choice['label']['attr']['on'] = sprintf(
401
+ 'tap:AMP.setState(%s)',
402
+ wp_json_encode( array( $amp_state_id => $choice['attr']['value'] ) )
403
+ );
404
+ $choice['label']['attr']['role'] = 'button';
405
+ }
406
 
407
  // Image choices.
408
  printf(
423
  echo '<br>';
424
  }
425
 
426
+ $choice['attr']['tabindex'] = '-1';
427
+
428
+ if ( wpforms_is_amp() ) {
429
+ $choice['attr']['[checked]'] = sprintf(
430
+ '%s == %s',
431
+ $amp_state_id,
432
+ wp_json_encode( $choice['attr']['value'] )
433
+ );
434
+ }
435
+
436
  printf(
437
  '<input type="radio" %s %s %s>',
438
  wpforms_html_attributes( $choice['id'], $choice['class'], $choice['data'], $choice['attr'] ),
includes/fields/class-text.php CHANGED
@@ -28,6 +28,108 @@ class WPForms_Field_Text extends WPForms_Field {
28
  add_filter( 'wpforms_field_properties_text', array( $this, 'field_properties' ), 5, 3 );
29
  }
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  /**
32
  * Define additional field properties.
33
  *
@@ -47,7 +149,14 @@ class WPForms_Field_Text extends WPForms_Field {
47
  // Add class that will trigger custom mask.
48
  $properties['inputs']['primary']['class'][] = 'wpforms-masked-input';
49
 
50
- if ( false !== strpos( $field['input_mask'], 'alias:' ) ) {
 
 
 
 
 
 
 
51
  $mask = str_replace( 'alias:', '', $field['input_mask'] );
52
  $properties['inputs']['primary']['data']['inputmask-alias'] = $mask;
53
  } elseif ( false !== strpos( $field['input_mask'], 'regex:' ) ) {
28
  add_filter( 'wpforms_field_properties_text', array( $this, 'field_properties' ), 5, 3 );
29
  }
30
 
31
+ /**
32
+ * Convert mask formatted for jquery.inputmask into the format used by amp-inputmask.
33
+ *
34
+ * Note that amp-inputmask does not yet support all of the options that jquery.inputmask provides.
35
+ * In particular, amp-inputmask doesn't provides:
36
+ * - Upper-alphabetical mask.
37
+ * - Upper-alphanumeric mask.
38
+ * - Advanced Input Masks with arbitrary repeating groups.
39
+ *
40
+ * @link https://amp.dev/documentation/components/amp-inputmask
41
+ * @link https://wpforms.com/docs/how-to-use-custom-input-masks/
42
+ *
43
+ * @param string $mask Mask formatted for jquery.inputmask.
44
+ * @return array {
45
+ * Mask and placeholder.
46
+ *
47
+ * @type string $mask Mask for amp-inputmask.
48
+ * @type string $placeholder Placeholder derived from mask if one is not supplied.
49
+ * }
50
+ */
51
+ protected function convert_mask_to_amp_inputmask( $mask ) {
52
+ $placeholder = '';
53
+
54
+ // Convert jquery.inputmask format into amp-inputmask format.
55
+ $amp_mask = '';
56
+ $req_mask_mapping = array(
57
+ '9' => '0', // Numeric.
58
+ 'a' => 'L', // Alphabetical (a-z or A-Z).
59
+ 'A' => 'L', // Upper-alphabetical (A-Z). Note: AMP does not have an uppercase-alphabetical mask type, so same as previous.
60
+ '*' => 'A', // Alphanumeric (0-9, a-z, A-Z).
61
+ '&' => 'A', // Upper-alphanumeric (A-Z, 0-9). Note: AMP does not have an uppercase-alphanumeric mask type, so same as previous.
62
+ ' ' => '_', // Automatically insert spaces.
63
+ );
64
+ $opt_mask_mapping = array(
65
+ '9' => '9', // The user may optionally add a numeric character.
66
+ 'a' => 'l', // The user may optionally add an alphabetical character.
67
+ 'A' => 'l', // The user may optionally add an alphabetical character.
68
+ '*' => 'a', // The user may optionally add an alphanumeric character.
69
+ '&' => 'a', // The user may optionally add an alphanumeric character.
70
+ );
71
+ $placeholder_mapping = array(
72
+ '9' => '0',
73
+ 'a' => 'a',
74
+ 'A' => 'a',
75
+ '*' => '_',
76
+ '&' => '_',
77
+ );
78
+ $is_inside_optional = false;
79
+ $last_mask_token = null;
80
+ for ( $i = 0, $len = strlen( $mask ); $i < $len; $i++ ) {
81
+ if ( '[' === $mask[ $i ] ) {
82
+ $is_inside_optional = true;
83
+ $placeholder .= $mask[ $i ];
84
+ continue;
85
+ } elseif ( ']' === $mask[ $i ] ) {
86
+ $is_inside_optional = false;
87
+ $placeholder .= $mask[ $i ];
88
+ continue;
89
+ } elseif ( isset( $last_mask_token ) && preg_match( '/^\{(?P<n>\d+)(?:,(?P<m>\d+))?\}/', substr( $mask, $i ), $matches ) ) {
90
+ $amp_mask .= str_repeat( $req_mask_mapping[ $last_mask_token ], $matches['n'] );
91
+ $placeholder .= str_repeat( $placeholder_mapping[ $last_mask_token ], $matches['n'] );
92
+ if ( isset( $matches['m'] ) ) {
93
+ $amp_mask .= str_repeat( $opt_mask_mapping[ $last_mask_token ], $matches['m'] );
94
+ $placeholder .= str_repeat( $placeholder_mapping[ $last_mask_token ], $matches['m'] );
95
+ }
96
+ $i += strlen( $matches[0] ) - 1;
97
+
98
+ $last_mask_token = null; // Reset.
99
+ continue;
100
+ }
101
+
102
+ if ( '\\' === $mask[ $i ] ) {
103
+ $amp_mask .= '\\';
104
+ $i++;
105
+ if ( ! isset( $mask[ $i ] ) ) {
106
+ continue;
107
+ }
108
+ $amp_mask .= $mask[ $i ];
109
+ } else {
110
+ // Remember this token in case it is a mask.
111
+ if ( isset( $opt_mask_mapping[ $mask[ $i ] ] ) ) {
112
+ $last_mask_token = $mask[ $i ];
113
+ }
114
+
115
+ if ( $is_inside_optional && isset( $opt_mask_mapping[ $mask[ $i ] ] ) ) {
116
+ $amp_mask .= $opt_mask_mapping[ $mask[ $i ] ];
117
+ } elseif ( isset( $req_mask_mapping[ $mask[ $i ] ] ) ) {
118
+ $amp_mask .= $req_mask_mapping[ $mask[ $i ] ];
119
+ } else {
120
+ $amp_mask .= '\\' . $mask[ $i ];
121
+ }
122
+ }
123
+
124
+ if ( isset( $placeholder_mapping[ $mask[ $i ] ] ) ) {
125
+ $placeholder .= $placeholder_mapping[ $mask[ $i ] ];
126
+ } else {
127
+ $placeholder .= $mask[ $i ];
128
+ }
129
+ }
130
+ return array( $amp_mask, $placeholder );
131
+ }
132
+
133
  /**
134
  * Define additional field properties.
135
  *
149
  // Add class that will trigger custom mask.
150
  $properties['inputs']['primary']['class'][] = 'wpforms-masked-input';
151
 
152
+ if ( wpforms_is_amp() ) {
153
+ list( $amp_mask, $placeholder ) = $this->convert_mask_to_amp_inputmask( $field['input_mask'] );
154
+
155
+ $properties['inputs']['primary']['attr']['mask'] = $amp_mask;
156
+ if ( empty( $properties['inputs']['primary']['attr']['placeholder'] ) ) {
157
+ $properties['inputs']['primary']['attr']['placeholder'] = $placeholder;
158
+ }
159
+ } elseif ( false !== strpos( $field['input_mask'], 'alias:' ) ) {
160
  $mask = str_replace( 'alias:', '', $field['input_mask'] );
161
  $properties['inputs']['primary']['data']['inputmask-alias'] = $mask;
162
  } elseif ( false !== strpos( $field['input_mask'], 'regex:' ) ) {
includes/functions.php CHANGED
@@ -424,7 +424,13 @@ function wpforms_html_attributes( $id = '', $class = array(), $datas = array(),
424
  if ( ! empty( $atts ) ) {
425
  foreach ( $atts as $att => $val ) {
426
  if ( '0' == $val || ! empty( $val ) ) {
427
- $parts[] = sanitize_html_class( $att ) . '="' . esc_attr( $val ) . '"';
 
 
 
 
 
 
428
  }
429
  }
430
  }
@@ -1624,9 +1630,10 @@ function wpforms_log( $title = '', $message = '', $args = array() ) {
1624
  *
1625
  * @since 1.4.1
1626
  *
 
1627
  * @return bool
1628
  */
1629
- function wpforms_is_amp() {
1630
 
1631
  $is_amp = false;
1632
 
@@ -1639,6 +1646,10 @@ function wpforms_is_amp() {
1639
  $is_amp = true;
1640
  }
1641
 
 
 
 
 
1642
  return apply_filters( 'wpforms_is_amp', $is_amp );
1643
  }
1644
 
424
  if ( ! empty( $atts ) ) {
425
  foreach ( $atts as $att => $val ) {
426
  if ( '0' == $val || ! empty( $val ) ) {
427
+ if ( '[' === $att[0] ) {
428
+ // Handle special case for bound attributes in AMP.
429
+ $escaped_att = '[' . sanitize_html_class( trim( $att, '[]' ) ) . ']';
430
+ } else {
431
+ $escaped_att = sanitize_html_class( $att );
432
+ }
433
+ $parts[] = $escaped_att . '="' . esc_attr( $val ) . '"';
434
  }
435
  }
436
  }
1630
  *
1631
  * @since 1.4.1
1632
  *
1633
+ * @param bool $check_theme_support Whether theme support should be checked. Defaults to true.
1634
  * @return bool
1635
  */
1636
+ function wpforms_is_amp( $check_theme_support = true ) {
1637
 
1638
  $is_amp = false;
1639
 
1646
  $is_amp = true;
1647
  }
1648
 
1649
+ if ( $is_amp && $check_theme_support ) {
1650
+ $is_amp = current_theme_supports( 'amp' );
1651
+ }
1652
+
1653
  return apply_filters( 'wpforms_is_amp', $is_amp );
1654
  }
1655
 
languages/wpforms-lite.pot CHANGED
@@ -1,13 +1,13 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: WPForms Lite 1.5.2.3\n"
4
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms-lite\n"
5
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
6
  "Language-Team: LANGUAGE <LL@li.org>\n"
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
- "POT-Creation-Date: 2019-04-23T13:57:12+00:00\n"
11
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
  "X-Generator: WP-CLI 2.1.0\n"
13
  "X-Domain: wpforms-lite\n"
@@ -36,7 +36,7 @@ msgstr ""
36
 
37
  #. translators: %s - form name.
38
  #: lite/wpforms-lite.php:55
39
- #: includes/class-process.php:499
40
  msgid "New %s Entry"
41
  msgstr ""
42
 
@@ -129,7 +129,7 @@ msgstr ""
129
  #: includes/admin/importers/class-ninja-forms.php:142
130
  #: includes/admin/importers/class-pirate-forms.php:459
131
  #: includes/templates/class-contact.php:70
132
- #: includes/class-process.php:344
133
  #: includes/class-form.php:247
134
  msgid "Thanks for contacting us! We will be in touch with you shortly."
135
  msgstr ""
@@ -302,1313 +302,1313 @@ msgstr ""
302
  msgid "Upgrade to WPForms Pro Now"
303
  msgstr ""
304
 
305
- #: lite/wpforms-lite.php:1045
306
  #: includes/admin/class-about.php:85
307
  #: includes/admin/class-menu.php:113
308
  msgid "WPForms Addons"
309
  msgstr ""
310
 
311
- #: lite/wpforms-lite.php:1046
312
  msgid "Search Addons"
313
  msgstr ""
314
 
315
- #: lite/wpforms-lite.php:1049
316
  msgid "Form Addons are a PRO feature."
317
  msgstr ""
318
 
319
- #: lite/wpforms-lite.php:1050
320
  msgid "Please upgrade to the PRO plan to unlock them and more awesome features."
321
  msgstr ""
322
 
323
- #: lite/wpforms-lite.php:1053
324
- #: lite/wpforms-lite.php:1079
325
  #: includes/admin/class-tools.php:499
326
  #: includes/admin/class-welcome.php:262
327
  msgid "Upgrade Now"
328
  msgstr ""
329
 
330
  #. translators: %s - addon name
331
- #: lite/wpforms-lite.php:1069
332
  msgid "%s Addon"
333
  msgstr ""
334
 
335
- #: includes/functions.php:715
336
  msgid "Alabama"
337
  msgstr ""
338
 
339
- #: includes/functions.php:716
340
  msgid "Alaska"
341
  msgstr ""
342
 
343
- #: includes/functions.php:717
344
  msgid "Arizona"
345
  msgstr ""
346
 
347
- #: includes/functions.php:718
348
  msgid "Arkansas"
349
  msgstr ""
350
 
351
- #: includes/functions.php:719
352
  msgid "California"
353
  msgstr ""
354
 
355
- #: includes/functions.php:720
356
  msgid "Colorado"
357
  msgstr ""
358
 
359
- #: includes/functions.php:721
360
  msgid "Connecticut"
361
  msgstr ""
362
 
363
- #: includes/functions.php:722
364
  msgid "Delaware"
365
  msgstr ""
366
 
367
- #: includes/functions.php:723
368
  msgid "District of Columbia"
369
  msgstr ""
370
 
371
- #: includes/functions.php:724
372
  msgid "Florida"
373
  msgstr ""
374
 
375
- #: includes/functions.php:725
376
  msgctxt "US State"
377
  msgid "Georgia"
378
  msgstr ""
379
 
380
- #: includes/functions.php:726
381
  msgid "Hawaii"
382
  msgstr ""
383
 
384
- #: includes/functions.php:727
385
  msgid "Idaho"
386
  msgstr ""
387
 
388
- #: includes/functions.php:728
389
  msgid "Illinois"
390
  msgstr ""
391
 
392
- #: includes/functions.php:729
393
  msgid "Indiana"
394
  msgstr ""
395
 
396
- #: includes/functions.php:730
397
  msgid "Iowa"
398
  msgstr ""
399
 
400
- #: includes/functions.php:731
401
  msgid "Kansas"
402
  msgstr ""
403
 
404
- #: includes/functions.php:732
405
  msgid "Kentucky"
406
  msgstr ""
407
 
408
- #: includes/functions.php:733
409
  msgid "Louisiana"
410
  msgstr ""
411
 
412
- #: includes/functions.php:734
413
  msgid "Maine"
414
  msgstr ""
415
 
416
- #: includes/functions.php:735
417
  msgid "Maryland"
418
  msgstr ""
419
 
420
- #: includes/functions.php:736
421
  msgid "Massachusetts"
422
  msgstr ""
423
 
424
- #: includes/functions.php:737
425
  msgid "Michigan"
426
  msgstr ""
427
 
428
- #: includes/functions.php:738
429
  msgid "Minnesota"
430
  msgstr ""
431
 
432
- #: includes/functions.php:739
433
  msgid "Mississippi"
434
  msgstr ""
435
 
436
- #: includes/functions.php:740
437
  msgid "Missouri"
438
  msgstr ""
439
 
440
- #: includes/functions.php:741
441
  msgid "Montana"
442
  msgstr ""
443
 
444
- #: includes/functions.php:742
445
  msgid "Nebraska"
446
  msgstr ""
447
 
448
- #: includes/functions.php:743
449
  msgid "Nevada"
450
  msgstr ""
451
 
452
- #: includes/functions.php:744
453
  msgid "New Hampshire"
454
  msgstr ""
455
 
456
- #: includes/functions.php:745
457
  msgid "New Jersey"
458
  msgstr ""
459
 
460
- #: includes/functions.php:746
461
  msgid "New Mexico"
462
  msgstr ""
463
 
464
- #: includes/functions.php:747
465
  msgid "New York"
466
  msgstr ""
467
 
468
- #: includes/functions.php:748
469
  msgid "North Carolina"
470
  msgstr ""
471
 
472
- #: includes/functions.php:749
473
  msgid "North Dakota"
474
  msgstr ""
475
 
476
- #: includes/functions.php:750
477
  msgid "Ohio"
478
  msgstr ""
479
 
480
- #: includes/functions.php:751
481
  msgid "Oklahoma"
482
  msgstr ""
483
 
484
- #: includes/functions.php:752
485
  msgid "Oregon"
486
  msgstr ""
487
 
488
- #: includes/functions.php:753
489
  msgid "Pennsylvania"
490
  msgstr ""
491
 
492
- #: includes/functions.php:754
493
  msgid "Rhode Island"
494
  msgstr ""
495
 
496
- #: includes/functions.php:755
497
  msgid "South Carolina"
498
  msgstr ""
499
 
500
- #: includes/functions.php:756
501
  msgid "South Dakota"
502
  msgstr ""
503
 
504
- #: includes/functions.php:757
505
  msgid "Tennessee"
506
  msgstr ""
507
 
508
- #: includes/functions.php:758
509
  msgid "Texas"
510
  msgstr ""
511
 
512
- #: includes/functions.php:759
513
  msgid "Utah"
514
  msgstr ""
515
 
516
- #: includes/functions.php:760
517
  msgid "Vermont"
518
  msgstr ""
519
 
520
- #: includes/functions.php:761
521
  msgid "Virginia"
522
  msgstr ""
523
 
524
- #: includes/functions.php:762
525
  msgid "Washington"
526
  msgstr ""
527
 
528
- #: includes/functions.php:763
529
  msgid "West Virginia"
530
  msgstr ""
531
 
532
- #: includes/functions.php:764
533
  msgid "Wisconsin"
534
  msgstr ""
535
 
536
- #: includes/functions.php:765
537
  msgid "Wyoming"
538
  msgstr ""
539
 
540
- #: includes/functions.php:781
541
  msgid "Afghanistan"
542
  msgstr ""
543
 
544
- #: includes/functions.php:782
545
  msgid "Åland Islands"
546
  msgstr ""
547
 
548
- #: includes/functions.php:783
549
  msgid "Albania"
550
  msgstr ""
551
 
552
- #: includes/functions.php:784
553
  msgid "Algeria"
554
  msgstr ""
555
 
556
- #: includes/functions.php:785
557
  msgid "American Samoa"
558
  msgstr ""
559
 
560
- #: includes/functions.php:786
561
  msgid "Andorra"
562
  msgstr ""
563
 
564
- #: includes/functions.php:787
565
  msgid "Angola"
566
  msgstr ""
567
 
568
- #: includes/functions.php:788
569
  msgid "Anguilla"
570
  msgstr ""
571
 
572
- #: includes/functions.php:789
573
  msgid "Antarctica"
574
  msgstr ""
575
 
576
- #: includes/functions.php:790
577
  msgid "Antigua and Barbuda"
578
  msgstr ""
579
 
580
- #: includes/functions.php:791
581
  msgid "Argentina"
582
  msgstr ""
583
 
584
- #: includes/functions.php:792
585
  msgid "Armenia"
586
  msgstr ""
587
 
588
- #: includes/functions.php:793
589
  msgid "Aruba"
590
  msgstr ""
591
 
592
- #: includes/functions.php:794
593
  msgid "Australia"
594
  msgstr ""
595
 
596
- #: includes/functions.php:795
597
  msgid "Austria"
598
  msgstr ""
599
 
600
- #: includes/functions.php:796
601
  msgid "Azerbaijan"
602
  msgstr ""
603
 
604
- #: includes/functions.php:797
605
  msgid "Bahamas"
606
  msgstr ""
607
 
608
- #: includes/functions.php:798
609
  msgid "Bahrain"
610
  msgstr ""
611
 
612
- #: includes/functions.php:799
613
  msgid "Bangladesh"
614
  msgstr ""
615
 
616
- #: includes/functions.php:800
617
  msgid "Barbados"
618
  msgstr ""
619
 
620
- #: includes/functions.php:801
621
  msgid "Belarus"
622
  msgstr ""
623
 
624
- #: includes/functions.php:802
625
  msgid "Belgium"
626
  msgstr ""
627
 
628
- #: includes/functions.php:803
629
  msgid "Belize"
630
  msgstr ""
631
 
632
- #: includes/functions.php:804
633
  msgid "Benin"
634
  msgstr ""
635
 
636
- #: includes/functions.php:805
637
  msgid "Bermuda"
638
  msgstr ""
639
 
640
- #: includes/functions.php:806
641
  msgid "Bhutan"
642
  msgstr ""
643
 
644
- #: includes/functions.php:807
645
  msgid "Bolivia (Plurinational State of)"
646
  msgstr ""
647
 
648
- #: includes/functions.php:808
649
  msgid "Bosnia and Herzegovina"
650
  msgstr ""
651
 
652
- #: includes/functions.php:809
653
  msgid "Botswana"
654
  msgstr ""
655
 
656
- #: includes/functions.php:810
657
  msgid "Bouvet Island"
658
  msgstr ""
659
 
660
- #: includes/functions.php:811
661
  msgid "Brazil"
662
  msgstr ""
663
 
664
- #: includes/functions.php:812
665
  msgid "British Indian Ocean Territory"
666
  msgstr ""
667
 
668
- #: includes/functions.php:813
669
  msgid "Brunei Darussalam"
670
  msgstr ""
671
 
672
- #: includes/functions.php:814
673
  msgid "Bulgaria"
674
  msgstr ""
675
 
676
- #: includes/functions.php:815
677
  msgid "Burkina Faso"
678
  msgstr ""
679
 
680
- #: includes/functions.php:816
681
  msgid "Burundi"
682
  msgstr ""
683
 
684
- #: includes/functions.php:817
685
  msgid "Cabo Verde"
686
  msgstr ""
687
 
688
- #: includes/functions.php:818
689
  msgid "Cambodia"
690
  msgstr ""
691
 
692
- #: includes/functions.php:819
693
  msgid "Cameroon"
694
  msgstr ""
695
 
696
- #: includes/functions.php:820
697
  msgid "Canada"
698
  msgstr ""
699
 
700
- #: includes/functions.php:821
701
  msgid "Cayman Islands"
702
  msgstr ""
703
 
704
- #: includes/functions.php:822
705
  msgid "Central African Republic"
706
  msgstr ""
707
 
708
- #: includes/functions.php:823
709
  msgid "Chad"
710
  msgstr ""
711
 
712
- #: includes/functions.php:824
713
  msgid "Chile"
714
  msgstr ""
715
 
716
- #: includes/functions.php:825
717
  msgid "China"
718
  msgstr ""
719
 
720
- #: includes/functions.php:826
721
  msgid "Christmas Island"
722
  msgstr ""
723
 
724
- #: includes/functions.php:827
725
  msgid "Cocos (Keeling) Islands"
726
  msgstr ""
727
 
728
- #: includes/functions.php:828
729
  msgid "Colombia"
730
  msgstr ""
731
 
732
- #: includes/functions.php:829
733
  msgid "Comoros"
734
  msgstr ""
735
 
736
- #: includes/functions.php:830
737
  msgid "Congo"
738
  msgstr ""
739
 
740
- #: includes/functions.php:831
741
  msgid "Congo (Democratic Republic of the)"
742
  msgstr ""
743
 
744
- #: includes/functions.php:832
745
  msgid "Cook Islands"
746
  msgstr ""
747
 
748
- #: includes/functions.php:833
749
  msgid "Costa Rica"
750
  msgstr ""
751
 
752
- #: includes/functions.php:834
753
  msgid "Côte d'Ivoire"
754
  msgstr ""
755
 
756
- #: includes/functions.php:835
757
  msgid "Croatia"
758
  msgstr ""
759
 
760
- #: includes/functions.php:836
761
  msgid "Cuba"
762
  msgstr ""
763
 
764
- #: includes/functions.php:837
765
  msgid "Curaçao"
766
  msgstr ""
767
 
768
- #: includes/functions.php:838
769
  msgid "Cyprus"
770
  msgstr ""
771
 
772
- #: includes/functions.php:839
773
  msgid "Czech Republic"
774
  msgstr ""
775
 
776
- #: includes/functions.php:840
777
  msgid "Denmark"
778
  msgstr ""
779
 
780
- #: includes/functions.php:841
781
  msgid "Djibouti"
782
  msgstr ""
783
 
784
- #: includes/functions.php:842
785
  msgid "Dominica"
786
  msgstr ""
787
 
788
- #: includes/functions.php:843
789
  msgid "Dominican Republic"
790
  msgstr ""
791
 
792
- #: includes/functions.php:844
793
  msgid "Ecuador"
794
  msgstr ""
795
 
796
- #: includes/functions.php:845
797
  msgid "Egypt"
798
  msgstr ""
799
 
800
- #: includes/functions.php:846
801
  msgid "El Salvador"
802
  msgstr ""
803
 
804
- #: includes/functions.php:847
805
  msgid "Equatorial Guinea"
806
  msgstr ""
807
 
808
- #: includes/functions.php:848
809
  msgid "Eritrea"
810
  msgstr ""
811
 
812
- #: includes/functions.php:849
813
  msgid "Estonia"
814
  msgstr ""
815
 
816
- #: includes/functions.php:850
817
  msgid "Ethiopia"
818
  msgstr ""
819
 
820
- #: includes/functions.php:851
821
  msgid "Falkland Islands (Malvinas)"
822
  msgstr ""
823
 
824
- #: includes/functions.php:852
825
  msgid "Faroe Islands"
826
  msgstr ""
827
 
828
- #: includes/functions.php:853
829
  msgid "Fiji"
830
  msgstr ""
831
 
832
- #: includes/functions.php:854
833
  msgid "Finland"
834
  msgstr ""
835
 
836
- #: includes/functions.php:855
837
  msgid "France"
838
  msgstr ""
839
 
840
- #: includes/functions.php:856
841
  msgid "French Guiana"
842
  msgstr ""
843
 
844
- #: includes/functions.php:857
845
  msgid "French Polynesia"
846
  msgstr ""
847
 
848
- #: includes/functions.php:858
849
  msgid "French Southern Territories"
850
  msgstr ""
851
 
852
- #: includes/functions.php:859
853
  msgid "Gabon"
854
  msgstr ""
855
 
856
- #: includes/functions.php:860
857
  msgid "Gambia"
858
  msgstr ""
859
 
860
- #: includes/functions.php:861
861
  msgctxt "Country"
862
  msgid "Georgia"
863
  msgstr ""
864
 
865
- #: includes/functions.php:862
866
  msgid "Germany"
867
  msgstr ""
868
 
869
- #: includes/functions.php:863
870
  msgid "Ghana"
871
  msgstr ""
872
 
873
- #: includes/functions.php:864
874
  msgid "Gibraltar"
875
  msgstr ""
876
 
877
- #: includes/functions.php:865
878
  msgid "Greece"
879
  msgstr ""
880
 
881
- #: includes/functions.php:866
882
  msgid "Greenland"
883
  msgstr ""
884
 
885
- #: includes/functions.php:867
886
  msgid "Grenada"
887
  msgstr ""
888
 
889
- #: includes/functions.php:868
890
  msgid "Guadeloupe"
891
  msgstr ""
892
 
893
- #: includes/functions.php:869
894
  msgid "Guam"
895
  msgstr ""
896
 
897
- #: includes/functions.php:870
898
  msgid "Guatemala"
899
  msgstr ""
900
 
901
- #: includes/functions.php:871
902
  msgid "Guernsey"
903
  msgstr ""
904
 
905
- #: includes/functions.php:872
906
  msgid "Guinea"
907
  msgstr ""
908
 
909
- #: includes/functions.php:873
910
  msgid "Guinea-Bissau"
911
  msgstr ""
912
 
913
- #: includes/functions.php:874
914
  msgid "Guyana"
915
  msgstr ""
916
 
917
- #: includes/functions.php:875
918
  msgid "Haiti"
919
  msgstr ""
920
 
921
- #: includes/functions.php:876
922
  msgid "Heard Island and McDonald Islands"
923
  msgstr ""
924
 
925
- #: includes/functions.php:877
926
  msgid "Honduras"
927
  msgstr ""
928
 
929
- #: includes/functions.php:878
930
  msgid "Hong Kong"
931
  msgstr ""
932
 
933
- #: includes/functions.php:879
934
  msgid "Hungary"
935
  msgstr ""
936
 
937
- #: includes/functions.php:880
938
  msgid "Iceland"
939
  msgstr ""
940
 
941
- #: includes/functions.php:881
942
  msgid "India"
943
  msgstr ""
944
 
945
- #: includes/functions.php:882
946
  msgid "Indonesia"
947
  msgstr ""
948
 
949
- #: includes/functions.php:883
950
  msgid "Iran (Islamic Republic of)"
951
  msgstr ""
952
 
953
- #: includes/functions.php:884
954
  msgid "Iraq"
955
  msgstr ""
956
 
957
- #: includes/functions.php:885
958
  msgid "Ireland (Republic of)"
959
  msgstr ""
960
 
961
- #: includes/functions.php:886
962
  msgid "Isle of Man"
963
  msgstr ""
964
 
965
- #: includes/functions.php:887
966
  msgid "Israel"
967
  msgstr ""
968
 
969
- #: includes/functions.php:888
970
  msgid "Italy"
971
  msgstr ""
972
 
973
- #: includes/functions.php:889
974
  msgid "Jamaica"
975
  msgstr ""
976
 
977
- #: includes/functions.php:890
978
  msgid "Japan"
979
  msgstr ""
980
 
981
- #: includes/functions.php:891
982
  msgid "Jersey"
983
  msgstr ""
984
 
985
- #: includes/functions.php:892
986
  msgid "Jordan"
987
  msgstr ""
988
 
989
- #: includes/functions.php:893
990
  msgid "Kazakhstan"
991
  msgstr ""
992
 
993
- #: includes/functions.php:894
994
  msgid "Kenya"
995
  msgstr ""
996
 
997
- #: includes/functions.php:895
998
  msgid "Kiribati"
999
  msgstr ""
1000
 
1001
- #: includes/functions.php:896
1002
  msgid "Korea (Democratic People's Republic of)"
1003
  msgstr ""
1004
 
1005
- #: includes/functions.php:897
1006
  msgid "Korea (Republic of)"
1007
  msgstr ""
1008
 
1009
- #: includes/functions.php:898
1010
  msgid "Kuwait"
1011
  msgstr ""
1012
 
1013
- #: includes/functions.php:899
1014
  msgid "Kyrgyzstan"
1015
  msgstr ""
1016
 
1017
- #: includes/functions.php:900
1018
  msgid "Lao People's Democratic Republic"
1019
  msgstr ""
1020
 
1021
- #: includes/functions.php:901
1022
  msgid "Latvia"
1023
  msgstr ""
1024
 
1025
- #: includes/functions.php:902
1026
  msgid "Lebanon"
1027
  msgstr ""
1028
 
1029
- #: includes/functions.php:903
1030
  msgid "Lesotho"
1031
  msgstr ""
1032
 
1033
- #: includes/functions.php:904
1034
  msgid "Liberia"
1035
  msgstr ""
1036
 
1037
- #: includes/functions.php:905
1038
  msgid "Libya"
1039
  msgstr ""
1040
 
1041
- #: includes/functions.php:906
1042
  msgid "Liechtenstein"
1043
  msgstr ""
1044
 
1045
- #: includes/functions.php:907
1046
  msgid "Lithuania"
1047
  msgstr ""
1048
 
1049
- #: includes/functions.php:908
1050
  msgid "Luxembourg"
1051
  msgstr ""
1052
 
1053
- #: includes/functions.php:909
1054
  msgid "Macao"
1055
  msgstr ""
1056
 
1057
- #: includes/functions.php:910
1058
  msgid "Macedonia (Republic of)"
1059
  msgstr ""
1060
 
1061
- #: includes/functions.php:911
1062
  msgid "Madagascar"
1063
  msgstr ""
1064
 
1065
- #: includes/functions.php:912
1066
  msgid "Malawi"
1067
  msgstr ""
1068
 
1069
- #: includes/functions.php:913
1070
  msgid "Malaysia"
1071
  msgstr ""
1072
 
1073
- #: includes/functions.php:914
1074
  msgid "Maldives"
1075
  msgstr ""
1076
 
1077
- #: includes/functions.php:915
1078
  msgid "Mali"
1079
  msgstr ""
1080
 
1081
- #: includes/functions.php:916
1082
  msgid "Malta"
1083
  msgstr ""
1084
 
1085
- #: includes/functions.php:917
1086
  msgid "Marshall Islands"
1087
  msgstr ""
1088
 
1089
- #: includes/functions.php:918
1090
  msgid "Martinique"
1091
  msgstr ""
1092
 
1093
- #: includes/functions.php:919
1094
  msgid "Mauritania"
1095
  msgstr ""
1096
 
1097
- #: includes/functions.php:920
1098
  msgid "Mauritius"
1099
  msgstr ""
1100
 
1101
- #: includes/functions.php:921
1102
  msgid "Mayotte"
1103
  msgstr ""
1104
 
1105
- #: includes/functions.php:922
1106
  msgid "Mexico"
1107
  msgstr ""
1108
 
1109
- #: includes/functions.php:923
1110
  msgid "Micronesia (Federated States of)"
1111
  msgstr ""
1112
 
1113
- #: includes/functions.php:924
1114
  msgid "Moldova (Republic of)"
1115
  msgstr ""
1116
 
1117
- #: includes/functions.php:925
1118
  msgid "Monaco"
1119
  msgstr ""
1120
 
1121
- #: includes/functions.php:926
1122
  msgid "Mongolia"
1123
  msgstr ""
1124
 
1125
- #: includes/functions.php:927
1126
  msgid "Montenegro"
1127
  msgstr ""
1128
 
1129
- #: includes/functions.php:928
1130
  msgid "Montserrat"
1131
  msgstr ""
1132
 
1133
- #: includes/functions.php:929
1134
  msgid "Morocco"
1135
  msgstr ""
1136
 
1137
- #: includes/functions.php:930
1138
  msgid "Mozambique"
1139
  msgstr ""
1140
 
1141
- #: includes/functions.php:931
1142
  msgid "Myanmar"
1143
  msgstr ""
1144
 
1145
- #: includes/functions.php:932
1146
  msgid "Namibia"
1147
  msgstr ""
1148
 
1149
- #: includes/functions.php:933
1150
  msgid "Nauru"
1151
  msgstr ""
1152
 
1153
- #: includes/functions.php:934
1154
  msgid "Nepal"
1155
  msgstr ""
1156
 
1157
- #: includes/functions.php:935
1158
  msgid "Netherlands"
1159
  msgstr ""
1160
 
1161
- #: includes/functions.php:936
1162
  msgid "New Caledonia"
1163
  msgstr ""
1164
 
1165
- #: includes/functions.php:937
1166
  msgid "New Zealand"
1167
  msgstr ""
1168
 
1169
- #: includes/functions.php:938
1170
  msgid "Nicaragua"
1171
  msgstr ""
1172
 
1173
- #: includes/functions.php:939
1174
  msgid "Niger"
1175
  msgstr ""
1176
 
1177
- #: includes/functions.php:940
1178
  msgid "Nigeria"
1179
  msgstr ""
1180
 
1181
- #: includes/functions.php:941
1182
  msgid "Niue"
1183
  msgstr ""
1184
 
1185
- #: includes/functions.php:942
1186
  msgid "Norfolk Island"
1187
  msgstr ""
1188
 
1189
- #: includes/functions.php:943
1190
  msgid "Northern Mariana Islands"
1191
  msgstr ""
1192
 
1193
- #: includes/functions.php:944
1194
  msgid "Norway"
1195
  msgstr ""
1196
 
1197
- #: includes/functions.php:945
1198
  msgid "Oman"
1199
  msgstr ""
1200
 
1201
- #: includes/functions.php:946
1202
  msgid "Pakistan"
1203
  msgstr ""
1204
 
1205
- #: includes/functions.php:947
1206
  msgid "Palau"
1207
  msgstr ""
1208
 
1209
- #: includes/functions.php:948
1210
  msgid "Palestine (State of)"
1211
  msgstr ""
1212
 
1213
- #: includes/functions.php:949
1214
  msgid "Panama"
1215
  msgstr ""
1216
 
1217
- #: includes/functions.php:950
1218
  msgid "Papua New Guinea"
1219
  msgstr ""
1220
 
1221
- #: includes/functions.php:951
1222
  msgid "Paraguay"
1223
  msgstr ""
1224
 
1225
- #: includes/functions.php:952
1226
  msgid "Peru"
1227
  msgstr ""
1228
 
1229
- #: includes/functions.php:953
1230
  msgid "Philippines"
1231
  msgstr ""
1232
 
1233
- #: includes/functions.php:954
1234
  msgid "Pitcairn"
1235
  msgstr ""
1236
 
1237
- #: includes/functions.php:955
1238
  msgid "Poland"
1239
  msgstr ""
1240
 
1241
- #: includes/functions.php:956
1242
  msgid "Portugal"
1243
  msgstr ""
1244
 
1245
- #: includes/functions.php:957
1246
  msgid "Puerto Rico"
1247
  msgstr ""
1248
 
1249
- #: includes/functions.php:958
1250
  msgid "Qatar"
1251
  msgstr ""
1252
 
1253
- #: includes/functions.php:959
1254
  msgid "Réunion"
1255
  msgstr ""
1256
 
1257
- #: includes/functions.php:960
1258
  msgid "Romania"
1259
  msgstr ""
1260
 
1261
- #: includes/functions.php:961
1262
  msgid "Russian Federation"
1263
  msgstr ""
1264
 
1265
- #: includes/functions.php:962
1266
  msgid "Rwanda"
1267
  msgstr ""
1268
 
1269
- #: includes/functions.php:963
1270
  msgid "Saint Barthélemy"
1271
  msgstr ""
1272
 
1273
- #: includes/functions.php:964
1274
  msgid "Saint Helena, Ascension and Tristan da Cunha"
1275
  msgstr ""
1276
 
1277
- #: includes/functions.php:965
1278
  msgid "Saint Kitts and Nevis"
1279
  msgstr ""
1280
 
1281
- #: includes/functions.php:966
1282
  msgid "Saint Lucia"
1283
  msgstr ""
1284
 
1285
- #: includes/functions.php:967
1286
  msgid "Saint Martin (French part)"
1287
  msgstr ""
1288
 
1289
- #: includes/functions.php:968
1290
  msgid "Saint Pierre and Miquelon"
1291
  msgstr ""
1292
 
1293
- #: includes/functions.php:969
1294
  msgid "Saint Vincent and the Grenadines"
1295
  msgstr ""
1296
 
1297
- #: includes/functions.php:970
1298
  msgid "Samoa"
1299
  msgstr ""
1300
 
1301
- #: includes/functions.php:971
1302
  msgid "San Marino"
1303
  msgstr ""
1304
 
1305
- #: includes/functions.php:972
1306
  msgid "Sao Tome and Principe"
1307
  msgstr ""
1308
 
1309
- #: includes/functions.php:973
1310
  msgid "Saudi Arabia"
1311
  msgstr ""
1312
 
1313
- #: includes/functions.php:974
1314
  msgid "Senegal"
1315
  msgstr ""
1316
 
1317
- #: includes/functions.php:975
1318
  msgid "Serbia"
1319
  msgstr ""
1320
 
1321
- #: includes/functions.php:976
1322
  msgid "Seychelles"
1323
  msgstr ""
1324
 
1325
- #: includes/functions.php:977
1326
  msgid "Sierra Leone"
1327
  msgstr ""
1328
 
1329
- #: includes/functions.php:978
1330
  msgid "Singapore"
1331
  msgstr ""
1332
 
1333
- #: includes/functions.php:979
1334
  msgid "Sint Maarten (Dutch part)"
1335
  msgstr ""
1336
 
1337
- #: includes/functions.php:980
1338
  msgid "Slovakia"
1339
  msgstr ""
1340
 
1341
- #: includes/functions.php:981
1342
  msgid "Slovenia"
1343
  msgstr ""
1344
 
1345
- #: includes/functions.php:982
1346
  msgid "Solomon Islands"
1347
  msgstr ""
1348
 
1349
- #: includes/functions.php:983
1350
  msgid "Somalia"
1351
  msgstr ""
1352
 
1353
- #: includes/functions.php:984
1354
  msgid "South Africa"
1355
  msgstr ""
1356
 
1357
- #: includes/functions.php:985
1358
  msgid "South Georgia and the South Sandwich Islands"
1359
  msgstr ""
1360
 
1361
- #: includes/functions.php:986
1362
  msgid "South Sudan"
1363
  msgstr ""
1364
 
1365
- #: includes/functions.php:987
1366
  msgid "Spain"
1367
  msgstr ""
1368
 
1369
- #: includes/functions.php:988
1370
  msgid "Sri Lanka"
1371
  msgstr ""
1372
 
1373
- #: includes/functions.php:989
1374
  msgid "Sudan"
1375
  msgstr ""
1376
 
1377
- #: includes/functions.php:990
1378
  msgid "Suriname"
1379
  msgstr ""
1380
 
1381
- #: includes/functions.php:991
1382
  msgid "Svalbard and Jan Mayen"
1383
  msgstr ""
1384
 
1385
- #: includes/functions.php:992
1386
  msgid "Swaziland"
1387
  msgstr ""
1388
 
1389
- #: includes/functions.php:993
1390
  msgid "Sweden"
1391
  msgstr ""
1392
 
1393
- #: includes/functions.php:994
1394
  msgid "Switzerland"
1395
  msgstr ""
1396
 
1397
- #: includes/functions.php:995
1398
  msgid "Syrian Arab Republic"
1399
  msgstr ""
1400
 
1401
- #: includes/functions.php:996
1402
  msgid "Taiwan, Province of China"
1403
  msgstr ""
1404
 
1405
- #: includes/functions.php:997
1406
  msgid "Tajikistan"
1407
  msgstr ""
1408
 
1409
- #: includes/functions.php:998
1410
  msgid "Tanzania (United Republic of)"
1411
  msgstr ""
1412
 
1413
- #: includes/functions.php:999
1414
  msgid "Thailand"
1415
  msgstr ""
1416
 
1417
- #: includes/functions.php:1000
1418
  msgid "Timor-Leste"
1419
  msgstr ""
1420
 
1421
- #: includes/functions.php:1001
1422
  msgid "Togo"
1423
  msgstr ""
1424
 
1425
- #: includes/functions.php:1002
1426
  msgid "Tokelau"
1427
  msgstr ""
1428
 
1429
- #: includes/functions.php:1003
1430
  msgid "Tonga"
1431
  msgstr ""
1432
 
1433
- #: includes/functions.php:1004
1434
  msgid "Trinidad and Tobago"
1435
  msgstr ""
1436
 
1437
- #: includes/functions.php:1005
1438
  msgid "Tunisia"
1439
  msgstr ""
1440
 
1441
- #: includes/functions.php:1006
1442
  msgid "Turkey"
1443
  msgstr ""
1444
 
1445
- #: includes/functions.php:1007
1446
  msgid "Turkmenistan"
1447
  msgstr ""
1448
 
1449
- #: includes/functions.php:1008
1450
  msgid "Turks and Caicos Islands"
1451
  msgstr ""
1452
 
1453
- #: includes/functions.php:1009
1454
  msgid "Tuvalu"
1455
  msgstr ""
1456
 
1457
- #: includes/functions.php:1010
1458
  msgid "Uganda"
1459
  msgstr ""
1460
 
1461
- #: includes/functions.php:1011
1462
  msgid "Ukraine"
1463
  msgstr ""
1464
 
1465
- #: includes/functions.php:1012
1466
  msgid "United Arab Emirates"
1467
  msgstr ""
1468
 
1469
- #: includes/functions.php:1013
1470
  msgid "United Kingdom of Great Britain and Northern Ireland"
1471
  msgstr ""
1472
 
1473
- #: includes/functions.php:1014
1474
  msgid "United States of America"
1475
  msgstr ""
1476
 
1477
- #: includes/functions.php:1015
1478
  msgid "United States Minor Outlying Islands"
1479
  msgstr ""
1480
 
1481
- #: includes/functions.php:1016
1482
  msgid "Uruguay"
1483
  msgstr ""
1484
 
1485
- #: includes/functions.php:1017
1486
  msgid "Uzbekistan"
1487
  msgstr ""
1488
 
1489
- #: includes/functions.php:1018
1490
  msgid "Vanuatu"
1491
  msgstr ""
1492
 
1493
- #: includes/functions.php:1019
1494
  msgid "Vatican City State"
1495
  msgstr ""
1496
 
1497
- #: includes/functions.php:1020
1498
  msgid "Venezuela (Bolivarian Republic of)"
1499
  msgstr ""
1500
 
1501
- #: includes/functions.php:1021
1502
  msgid "Viet Nam"
1503
  msgstr ""
1504
 
1505
- #: includes/functions.php:1022
1506
  msgid "Virgin Islands (British)"
1507
  msgstr ""
1508
 
1509
- #: includes/functions.php:1023
1510
  msgid "Virgin Islands (U.S.)"
1511
  msgstr ""
1512
 
1513
- #: includes/functions.php:1024
1514
  msgid "Wallis and Futuna"
1515
  msgstr ""
1516
 
1517
- #: includes/functions.php:1025
1518
  msgid "Western Sahara"
1519
  msgstr ""
1520
 
1521
- #: includes/functions.php:1026
1522
  msgid "Yemen"
1523
  msgstr ""
1524
 
1525
- #: includes/functions.php:1027
1526
  msgid "Zambia"
1527
  msgstr ""
1528
 
1529
- #: includes/functions.php:1028
1530
  msgid "Zimbabwe"
1531
  msgstr ""
1532
 
1533
- #: includes/functions.php:1043
1534
  msgid "January"
1535
  msgstr ""
1536
 
1537
- #: includes/functions.php:1044
1538
  msgid "February"
1539
  msgstr ""
1540
 
1541
- #: includes/functions.php:1045
1542
  msgid "March"
1543
  msgstr ""
1544
 
1545
- #: includes/functions.php:1046
1546
  msgid "April"
1547
  msgstr ""
1548
 
1549
- #: includes/functions.php:1047
1550
  msgid "May"
1551
  msgstr ""
1552
 
1553
- #: includes/functions.php:1048
1554
  msgid "June"
1555
  msgstr ""
1556
 
1557
- #: includes/functions.php:1049
1558
  msgid "July"
1559
  msgstr ""
1560
 
1561
- #: includes/functions.php:1050
1562
  msgid "August"
1563
  msgstr ""
1564
 
1565
- #: includes/functions.php:1051
1566
  msgid "September"
1567
  msgstr ""
1568
 
1569
- #: includes/functions.php:1052
1570
  msgid "October"
1571
  msgstr ""
1572
 
1573
- #: includes/functions.php:1053
1574
  msgid "November"
1575
  msgstr ""
1576
 
1577
- #: includes/functions.php:1054
1578
  msgid "December"
1579
  msgstr ""
1580
 
1581
- #: includes/functions.php:1069
1582
  msgid "Sunday"
1583
  msgstr ""
1584
 
1585
- #: includes/functions.php:1070
1586
  msgid "Monday"
1587
  msgstr ""
1588
 
1589
- #: includes/functions.php:1071
1590
  msgid "Tuesday"
1591
  msgstr ""
1592
 
1593
- #: includes/functions.php:1072
1594
  msgid "Wednesday"
1595
  msgstr ""
1596
 
1597
- #: includes/functions.php:1073
1598
  msgid "Thursday"
1599
  msgstr ""
1600
 
1601
- #: includes/functions.php:1074
1602
  msgid "Friday"
1603
  msgstr ""
1604
 
1605
- #: includes/functions.php:1075
1606
  msgid "Saturday"
1607
  msgstr ""
1608
 
1609
- #: includes/functions.php:1684
1610
- #: includes/class-frontend.php:1052
1611
- #: includes/admin/class-settings.php:421
1612
  msgid "This field is required."
1613
  msgstr ""
1614
 
@@ -1652,80 +1652,80 @@ msgctxt "Widget"
1652
  msgid "Display form description"
1653
  msgstr ""
1654
 
1655
- #: includes/class-frontend.php:1053
1656
- #: includes/admin/class-settings.php:427
 
 
 
 
 
1657
  msgid "Please enter a valid URL."
1658
  msgstr ""
1659
 
1660
- #: includes/class-frontend.php:1054
1661
- #: includes/admin/class-settings.php:433
1662
  msgid "Please enter a valid email address."
1663
  msgstr ""
1664
 
1665
- #: includes/class-frontend.php:1055
1666
- #: includes/admin/class-settings.php:439
1667
  msgid "Did you mean {suggestion}?"
1668
  msgstr ""
1669
 
1670
- #: includes/class-frontend.php:1056
1671
  msgid "Click to accept this suggestion."
1672
  msgstr ""
1673
 
1674
- #: includes/class-frontend.php:1057
1675
- #: includes/admin/class-settings.php:445
1676
  #: includes/fields/class-number.php:162
1677
  msgid "Please enter a valid number."
1678
  msgstr ""
1679
 
1680
- #: includes/class-frontend.php:1058
1681
- #: includes/admin/class-settings.php:451
1682
  msgid "Field values do not match."
1683
  msgstr ""
1684
 
1685
- #: includes/class-frontend.php:1059
1686
  msgid "File type is not allowed."
1687
  msgstr ""
1688
 
1689
- #: includes/class-frontend.php:1060
1690
  msgid "File exceeds max size allowed."
1691
  msgstr ""
1692
 
1693
- #: includes/class-frontend.php:1061
1694
  msgid "Please enter time in 12-hour AM/PM format (eg 8:45 AM)."
1695
  msgstr ""
1696
 
1697
- #: includes/class-frontend.php:1062
1698
  msgid "Please enter time in 24-hour format (eg 22:45)."
1699
  msgstr ""
1700
 
1701
- #: includes/class-frontend.php:1063
1702
  msgid "Payment is required."
1703
  msgstr ""
1704
 
1705
- #: includes/class-frontend.php:1064
1706
  msgid "Please enter a valid credit card number."
1707
  msgstr ""
1708
 
1709
- #: includes/class-frontend.php:1065
1710
  msgid "Please enter a valid phone number."
1711
  msgstr ""
1712
 
1713
- #: includes/class-frontend.php:1066
1714
- #: includes/class-process.php:427
1715
  msgid "The total size of the selected files {totalSize} Mb exceeds the allowed limit {maxSize} Mb."
1716
  msgstr ""
1717
 
1718
- #: includes/class-frontend.php:1067
1719
- #: includes/admin/class-settings.php:457
1720
- #: includes/fields/class-checkbox.php:542
1721
  msgid "You have exceeded the number of allowed selections: {#}."
1722
  msgstr ""
1723
 
1724
- #. translators: %s - URL to a non-amp version of a page with the form.
1725
- #: includes/class-frontend.php:1180
1726
- msgid "<a href=\"%s\">Go to the full page</a> to view and submit the form."
1727
- msgstr ""
1728
-
1729
  #: includes/providers/class-base.php:93
1730
  msgid "Connection"
1731
  msgstr ""
@@ -2676,7 +2676,7 @@ msgstr ""
2676
  msgid "If your license has been upgraded or is incorrect, <a href=\"#\" id=\"wpforms-setting-license-key-refresh\">click here to force a refresh</a>."
2677
  msgstr ""
2678
 
2679
- #: includes/admin/settings-api.php:317
2680
  #: includes/fields/class-base.php:820
2681
  #: includes/fields/class-base.php:951
2682
  msgid "Upload Image"
@@ -3432,7 +3432,7 @@ msgid "Your site is running an outdated version of PHP that is no longer support
3432
  msgstr ""
3433
 
3434
  #: includes/admin/admin.php:382
3435
- msgid "<strong>Please Note:</strong> Support for PHP 5.3 will be discontinued in 2019. After this, if no further action is taken, WPForms functionality will be disabled."
3436
  msgstr ""
3437
 
3438
  #: includes/admin/admin.php:404
@@ -3702,8 +3702,8 @@ msgstr ""
3702
 
3703
  #: includes/admin/builder/panels/class-settings.php:42
3704
  #: includes/admin/builder/panels/class-settings.php:82
3705
- #: includes/admin/class-settings.php:164
3706
- #: includes/admin/class-settings.php:268
3707
  msgid "General"
3708
  msgstr ""
3709
 
@@ -3751,22 +3751,34 @@ msgstr ""
3751
  msgid "Enable anti-spam honeypot"
3752
  msgstr ""
3753
 
 
 
 
 
3754
  #: includes/admin/builder/panels/class-settings.php:158
3755
  msgid "Enable Google Invisible v2 reCAPTCHA"
3756
  msgstr ""
3757
 
3758
- #: includes/admin/builder/panels/class-settings.php:158
3759
- msgid "Enable Google Checkbox v2 reCAPTCHA"
3760
  msgstr ""
3761
 
3762
- #: includes/admin/builder/panels/class-settings.php:166
3763
  msgid "Enable dynamic fields population"
3764
  msgstr ""
3765
 
3766
- #: includes/admin/builder/panels/class-settings.php:168
3767
  msgid "How to use Dynamic Field Population"
3768
  msgstr ""
3769
 
 
 
 
 
 
 
 
 
3770
  #: includes/admin/builder/panels/class-fields.php:22
3771
  msgid "Fields"
3772
  msgstr ""
@@ -4158,21 +4170,21 @@ msgstr ""
4158
  msgid "Save Form"
4159
  msgstr ""
4160
 
4161
- #: includes/admin/class-settings.php:142
4162
  msgid "Settings were successfully saved."
4163
  msgstr ""
4164
 
4165
- #: includes/admin/class-settings.php:166
4166
- #: includes/admin/class-settings.php:171
4167
- #: includes/admin/class-settings.php:176
4168
- #: includes/admin/class-settings.php:181
4169
- #: includes/admin/class-settings.php:191
4170
  msgid "Save Settings"
4171
  msgstr ""
4172
 
4173
- #: includes/admin/class-settings.php:169
4174
- #: includes/admin/class-settings.php:336
4175
- #: includes/admin/class-settings.php:431
4176
  #: includes/templates/class-subscribe.php:44
4177
  #: includes/templates/class-suggestion.php:41
4178
  #: includes/templates/class-contact.php:42
@@ -4182,217 +4194,258 @@ msgstr ""
4182
  msgid "Email"
4183
  msgstr ""
4184
 
4185
- #: includes/admin/class-settings.php:174
4186
- #: includes/admin/class-settings.php:376
4187
  msgid "reCAPTCHA"
4188
  msgstr ""
4189
 
4190
- #: includes/admin/class-settings.php:179
4191
  msgid "Validation"
4192
  msgstr ""
4193
 
4194
- #: includes/admin/class-settings.php:184
4195
- #: includes/admin/class-settings.php:464
4196
- #: includes/admin/class-settings.php:471
4197
  msgid "Integrations"
4198
  msgstr ""
4199
 
4200
- #: includes/admin/class-settings.php:189
4201
- #: includes/admin/class-settings.php:480
4202
  msgid "Misc"
4203
  msgstr ""
4204
 
4205
- #: includes/admin/class-settings.php:230
4206
  msgid "reCAPTCHA is a free anti-spam service from Google which helps to protect your website from spam and abuse while letting real people pass through with ease."
4207
  msgstr ""
4208
 
4209
- #: includes/admin/class-settings.php:231
4210
- msgid "Google's original checkbox reCAPTCHA prompts users to check a box to prove they're human, whereas the newer Invisible reCAPTCHA uses advanced technology to detect real users without requiring any input. WPForms supports both versions of Google's v2 reCAPTCHA."
 
 
 
 
 
 
 
 
 
 
 
 
4211
  msgstr ""
4212
 
4213
- #: includes/admin/class-settings.php:232
4214
- msgid "Sites already using the original checkbox reCAPTCHA will need to create new site keys before switching to the Invisible reCAPTCHA."
4215
  msgstr ""
4216
 
4217
  #. translators: %s - WPForms.com Setup Captcha URL.
4218
- #: includes/admin/class-settings.php:238
4219
  msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Read our walk through</a> to learn more and for step-by-step directions."
4220
  msgstr ""
4221
 
4222
- #: includes/admin/class-settings.php:256
4223
  msgid "License"
4224
  msgstr ""
4225
 
4226
- #: includes/admin/class-settings.php:256
4227
  msgid "Your license key provides access to updates and addons."
4228
  msgstr ""
4229
 
4230
- #: includes/admin/class-settings.php:263
4231
  msgid "License Key"
4232
  msgstr ""
4233
 
4234
- #: includes/admin/class-settings.php:275
4235
  msgid "Include Form Styling"
4236
  msgstr ""
4237
 
4238
  #. translators: %s - WPForms.com documentation URL.
4239
- #: includes/admin/class-settings.php:279
4240
  msgid "Determines which CSS files to load for the site (<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">please see our tutorial for full details</a>). Unless experienced with CSS or instructed by support, \"Base and Form Theme Styling\" is recommended."
4241
  msgstr ""
4242
 
4243
- #: includes/admin/class-settings.php:294
4244
  msgid "Base and form theme styling"
4245
  msgstr ""
4246
 
4247
- #: includes/admin/class-settings.php:295
4248
  msgid "Base styling only"
4249
  msgstr ""
4250
 
4251
- #: includes/admin/class-settings.php:296
4252
  msgid "No styling"
4253
  msgstr ""
4254
 
4255
- #: includes/admin/class-settings.php:301
4256
  msgid "Load Assets Globally"
4257
  msgstr ""
4258
 
4259
- #: includes/admin/class-settings.php:302
4260
  msgid "Check this if you would like to load WPForms assets site-wide. Only check if your site is having compatibility issues or instructed to by support."
4261
  msgstr ""
4262
 
4263
- #: includes/admin/class-settings.php:307
4264
  msgid "GDPR"
4265
  msgstr ""
4266
 
4267
- #: includes/admin/class-settings.php:314
4268
  msgid "GDPR Enhancements"
4269
  msgstr ""
4270
 
4271
  #. translators: %s - WPForms.com GDPR documentation URL.
4272
- #: includes/admin/class-settings.php:318
4273
  msgid "Check this to turn on GDPR related features and enhancements. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Read our GDPR documentation</a> to learn more."
4274
  msgstr ""
4275
 
4276
- #: includes/admin/class-settings.php:343
4277
  msgid "Template"
4278
  msgstr ""
4279
 
4280
- #: includes/admin/class-settings.php:344
4281
  msgid "Determines how email notifications will be formatted. HTML Templates are the default."
4282
  msgstr ""
4283
 
4284
- #: includes/admin/class-settings.php:348
4285
  msgid "HTML Template"
4286
  msgstr ""
4287
 
4288
- #: includes/admin/class-settings.php:349
4289
  msgid "Plain text"
4290
  msgstr ""
4291
 
4292
- #: includes/admin/class-settings.php:354
4293
  msgid "Header Image"
4294
  msgstr ""
4295
 
4296
- #: includes/admin/class-settings.php:355
4297
  msgid "Upload or choose a logo to be displayed at the top of email notifications.<br>Recommended size is 300x100 or smaller for best support on all devices."
4298
  msgstr ""
4299
 
4300
- #: includes/admin/class-settings.php:360
4301
  msgid "Background Color"
4302
  msgstr ""
4303
 
4304
- #: includes/admin/class-settings.php:361
4305
  msgid "Customize the background color of the HTML email template."
4306
  msgstr ""
4307
 
4308
- #: includes/admin/class-settings.php:367
4309
  msgid "Carbon Copy"
4310
  msgstr ""
4311
 
4312
- #: includes/admin/class-settings.php:368
4313
  msgid "Check this if you would like to enable the ability to CC: email addresses in the form notification settings."
4314
  msgstr ""
4315
 
4316
- #: includes/admin/class-settings.php:383
4317
  msgid "Type"
4318
  msgstr ""
4319
 
4320
- #: includes/admin/class-settings.php:387
4321
  msgid "Checkbox reCAPTCHA v2"
4322
  msgstr ""
4323
 
4324
- #: includes/admin/class-settings.php:388
4325
  msgid "Invisible reCAPTCHA v2"
4326
  msgstr ""
4327
 
4328
- #: includes/admin/class-settings.php:393
 
 
 
 
4329
  msgid "Site Key"
4330
  msgstr ""
4331
 
4332
- #: includes/admin/class-settings.php:398
4333
  msgid "Secret Key"
4334
  msgstr ""
4335
 
4336
- #: includes/admin/class-settings.php:403
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4337
  msgid "No-Conflict Mode"
4338
  msgstr ""
4339
 
4340
- #: includes/admin/class-settings.php:404
4341
  msgid "When checked, other reCAPTCHA occurrences are forcefully removed, to prevent conflicts. Only check if your site is having compatibility issues or instructed to by support."
4342
  msgstr ""
4343
 
4344
- #: includes/admin/class-settings.php:412
4345
  msgid "Validation Messages"
4346
  msgstr ""
4347
 
4348
- #: includes/admin/class-settings.php:412
4349
  msgid "These messages are displayed to the users as they fill out a form in real-time."
4350
  msgstr ""
4351
 
4352
- #: includes/admin/class-settings.php:419
4353
  #: includes/fields/class-base.php:717
4354
  msgid "Required"
4355
  msgstr ""
4356
 
4357
- #: includes/admin/class-settings.php:425
4358
  msgid "Website URL"
4359
  msgstr ""
4360
 
4361
- #: includes/admin/class-settings.php:437
4362
  msgid "Email Suggestion"
4363
  msgstr ""
4364
 
4365
- #: includes/admin/class-settings.php:443
4366
  msgid "Number"
4367
  msgstr ""
4368
 
4369
- #: includes/admin/class-settings.php:449
4370
  msgid "Confirm Value"
4371
  msgstr ""
4372
 
4373
- #: includes/admin/class-settings.php:455
4374
  msgid "Checkbox Selection Limit"
4375
  msgstr ""
4376
 
4377
- #: includes/admin/class-settings.php:464
4378
- #: includes/admin/class-settings.php:471
4379
  msgid "Manage integrations with popular providers such as Constant Contact, MailChimp, Zapier, and more."
4380
  msgstr ""
4381
 
4382
- #: includes/admin/class-settings.php:487
4383
  msgid "Hide Announcements"
4384
  msgstr ""
4385
 
4386
- #: includes/admin/class-settings.php:488
4387
  msgid "Check this if you would like to hide plugin announcements and update details."
4388
  msgstr ""
4389
 
4390
- #: includes/admin/class-settings.php:493
4391
  msgid "Uninstall WPForms"
4392
  msgstr ""
4393
 
4394
- #: includes/admin/class-settings.php:494
4395
- msgid "Check this if you would like to remove ALL WPForms data upon plugin deletion. All forms, entries, and uploaded files will be unrecoverable."
4396
  msgstr ""
4397
 
4398
  #: includes/admin/class-am-deactivation-survey.php:172
@@ -5042,6 +5095,14 @@ msgstr ""
5042
  msgid "Enter text for the confirmation field placeholder."
5043
  msgstr ""
5044
 
 
 
 
 
 
 
 
 
5045
  #: includes/fields/class-radio.php:22
5046
  msgid "Multiple Choice"
5047
  msgstr ""
@@ -5054,44 +5115,40 @@ msgstr ""
5054
  msgid "Single Line Text"
5055
  msgstr ""
5056
 
5057
- #: includes/fields/class-text.php:142
5058
  msgid "Input Mask"
5059
  msgstr ""
5060
 
5061
- #: includes/fields/class-text.php:143
5062
  msgid "Enter your custom input mask."
5063
  msgstr ""
5064
 
5065
- #: includes/fields/class-text.php:144
5066
  msgid "See Examples & Docs"
5067
  msgstr ""
5068
 
5069
- #: includes/class-process.php:106
5070
  msgid "Invalid form."
5071
  msgstr ""
5072
 
5073
- #: includes/class-process.php:143
5074
- msgid "Incorrect reCAPTCHA, please try again."
5075
- msgstr ""
5076
-
5077
- #: includes/class-process.php:146
5078
- msgid "reCAPTCHA is required."
5079
- msgstr ""
5080
-
5081
- #: includes/class-process.php:166
5082
  msgid "Uploaded files combined size exceeds allowed maximum."
5083
  msgstr ""
5084
 
5085
- #: includes/class-process.php:178
5086
- #: includes/class-process.php:239
5087
- #: includes/class-process.php:426
5088
  msgid "Form has not been submitted, please see the errors below."
5089
  msgstr ""
5090
 
5091
- #: includes/class-process.php:190
5092
  msgid "WPForms honeypot field triggered."
5093
  msgstr ""
5094
 
 
 
 
 
5095
  #: includes/integrations.php:32
5096
  msgid "Select a form to display"
5097
  msgstr ""
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: WPForms Lite 1.5.3\n"
4
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms-lite\n"
5
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
6
  "Language-Team: LANGUAGE <LL@li.org>\n"
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
+ "POT-Creation-Date: 2019-06-17T15:02:41+00:00\n"
11
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
  "X-Generator: WP-CLI 2.1.0\n"
13
  "X-Domain: wpforms-lite\n"
36
 
37
  #. translators: %s - form name.
38
  #: lite/wpforms-lite.php:55
39
+ #: includes/class-process.php:630
40
  msgid "New %s Entry"
41
  msgstr ""
42
 
129
  #: includes/admin/importers/class-ninja-forms.php:142
130
  #: includes/admin/importers/class-pirate-forms.php:459
131
  #: includes/templates/class-contact.php:70
132
+ #: includes/class-process.php:442
133
  #: includes/class-form.php:247
134
  msgid "Thanks for contacting us! We will be in touch with you shortly."
135
  msgstr ""
302
  msgid "Upgrade to WPForms Pro Now"
303
  msgstr ""
304
 
305
+ #: lite/wpforms-lite.php:1065
306
  #: includes/admin/class-about.php:85
307
  #: includes/admin/class-menu.php:113
308
  msgid "WPForms Addons"
309
  msgstr ""
310
 
311
+ #: lite/wpforms-lite.php:1066
312
  msgid "Search Addons"
313
  msgstr ""
314
 
315
+ #: lite/wpforms-lite.php:1069
316
  msgid "Form Addons are a PRO feature."
317
  msgstr ""
318
 
319
+ #: lite/wpforms-lite.php:1070
320
  msgid "Please upgrade to the PRO plan to unlock them and more awesome features."
321
  msgstr ""
322
 
323
+ #: lite/wpforms-lite.php:1073
324
+ #: lite/wpforms-lite.php:1099
325
  #: includes/admin/class-tools.php:499
326
  #: includes/admin/class-welcome.php:262
327
  msgid "Upgrade Now"
328
  msgstr ""
329
 
330
  #. translators: %s - addon name
331
+ #: lite/wpforms-lite.php:1089
332
  msgid "%s Addon"
333
  msgstr ""
334
 
335
+ #: includes/functions.php:721
336
  msgid "Alabama"
337
  msgstr ""
338
 
339
+ #: includes/functions.php:722
340
  msgid "Alaska"
341
  msgstr ""
342
 
343
+ #: includes/functions.php:723
344
  msgid "Arizona"
345
  msgstr ""
346
 
347
+ #: includes/functions.php:724
348
  msgid "Arkansas"
349
  msgstr ""
350
 
351
+ #: includes/functions.php:725
352
  msgid "California"
353
  msgstr ""
354
 
355
+ #: includes/functions.php:726
356
  msgid "Colorado"
357
  msgstr ""
358
 
359
+ #: includes/functions.php:727
360
  msgid "Connecticut"
361
  msgstr ""
362
 
363
+ #: includes/functions.php:728
364
  msgid "Delaware"
365
  msgstr ""
366
 
367
+ #: includes/functions.php:729
368
  msgid "District of Columbia"
369
  msgstr ""
370
 
371
+ #: includes/functions.php:730
372
  msgid "Florida"
373
  msgstr ""
374
 
375
+ #: includes/functions.php:731
376
  msgctxt "US State"
377
  msgid "Georgia"
378
  msgstr ""
379
 
380
+ #: includes/functions.php:732
381
  msgid "Hawaii"
382
  msgstr ""
383
 
384
+ #: includes/functions.php:733
385
  msgid "Idaho"
386
  msgstr ""
387
 
388
+ #: includes/functions.php:734
389
  msgid "Illinois"
390
  msgstr ""
391
 
392
+ #: includes/functions.php:735
393
  msgid "Indiana"
394
  msgstr ""
395
 
396
+ #: includes/functions.php:736
397
  msgid "Iowa"
398
  msgstr ""
399
 
400
+ #: includes/functions.php:737
401
  msgid "Kansas"
402
  msgstr ""
403
 
404
+ #: includes/functions.php:738
405
  msgid "Kentucky"
406
  msgstr ""
407
 
408
+ #: includes/functions.php:739
409
  msgid "Louisiana"
410
  msgstr ""
411
 
412
+ #: includes/functions.php:740
413
  msgid "Maine"
414
  msgstr ""
415
 
416
+ #: includes/functions.php:741
417
  msgid "Maryland"
418
  msgstr ""
419
 
420
+ #: includes/functions.php:742
421
  msgid "Massachusetts"
422
  msgstr ""
423
 
424
+ #: includes/functions.php:743
425
  msgid "Michigan"
426
  msgstr ""
427
 
428
+ #: includes/functions.php:744
429
  msgid "Minnesota"
430
  msgstr ""
431
 
432
+ #: includes/functions.php:745
433
  msgid "Mississippi"
434
  msgstr ""
435
 
436
+ #: includes/functions.php:746
437
  msgid "Missouri"
438
  msgstr ""
439
 
440
+ #: includes/functions.php:747
441
  msgid "Montana"
442
  msgstr ""
443
 
444
+ #: includes/functions.php:748
445
  msgid "Nebraska"
446
  msgstr ""
447
 
448
+ #: includes/functions.php:749
449
  msgid "Nevada"
450
  msgstr ""
451
 
452
+ #: includes/functions.php:750
453
  msgid "New Hampshire"
454
  msgstr ""
455
 
456
+ #: includes/functions.php:751
457
  msgid "New Jersey"
458
  msgstr ""
459
 
460
+ #: includes/functions.php:752
461
  msgid "New Mexico"
462
  msgstr ""
463
 
464
+ #: includes/functions.php:753
465
  msgid "New York"
466
  msgstr ""
467
 
468
+ #: includes/functions.php:754
469
  msgid "North Carolina"
470
  msgstr ""
471
 
472
+ #: includes/functions.php:755
473
  msgid "North Dakota"
474
  msgstr ""
475
 
476
+ #: includes/functions.php:756
477
  msgid "Ohio"
478
  msgstr ""
479
 
480
+ #: includes/functions.php:757
481
  msgid "Oklahoma"
482
  msgstr ""
483
 
484
+ #: includes/functions.php:758
485
  msgid "Oregon"
486
  msgstr ""
487
 
488
+ #: includes/functions.php:759
489
  msgid "Pennsylvania"
490
  msgstr ""
491
 
492
+ #: includes/functions.php:760
493
  msgid "Rhode Island"
494
  msgstr ""
495
 
496
+ #: includes/functions.php:761
497
  msgid "South Carolina"
498
  msgstr ""
499
 
500
+ #: includes/functions.php:762
501
  msgid "South Dakota"
502
  msgstr ""
503
 
504
+ #: includes/functions.php:763
505
  msgid "Tennessee"
506
  msgstr ""
507
 
508
+ #: includes/functions.php:764
509
  msgid "Texas"
510
  msgstr ""
511
 
512
+ #: includes/functions.php:765
513
  msgid "Utah"
514
  msgstr ""
515
 
516
+ #: includes/functions.php:766
517
  msgid "Vermont"
518
  msgstr ""
519
 
520
+ #: includes/functions.php:767
521
  msgid "Virginia"
522
  msgstr ""
523
 
524
+ #: includes/functions.php:768
525
  msgid "Washington"
526
  msgstr ""
527
 
528
+ #: includes/functions.php:769
529
  msgid "West Virginia"
530
  msgstr ""
531
 
532
+ #: includes/functions.php:770
533
  msgid "Wisconsin"
534
  msgstr ""
535
 
536
+ #: includes/functions.php:771
537
  msgid "Wyoming"
538
  msgstr ""
539
 
540
+ #: includes/functions.php:787
541
  msgid "Afghanistan"
542
  msgstr ""
543
 
544
+ #: includes/functions.php:788
545
  msgid "Åland Islands"
546
  msgstr ""
547
 
548
+ #: includes/functions.php:789
549
  msgid "Albania"
550
  msgstr ""
551
 
552
+ #: includes/functions.php:790
553
  msgid "Algeria"
554
  msgstr ""
555
 
556
+ #: includes/functions.php:791
557
  msgid "American Samoa"
558
  msgstr ""
559
 
560
+ #: includes/functions.php:792
561
  msgid "Andorra"
562
  msgstr ""
563
 
564
+ #: includes/functions.php:793
565
  msgid "Angola"
566
  msgstr ""
567
 
568
+ #: includes/functions.php:794
569
  msgid "Anguilla"
570
  msgstr ""
571
 
572
+ #: includes/functions.php:795
573
  msgid "Antarctica"
574
  msgstr ""
575
 
576
+ #: includes/functions.php:796
577
  msgid "Antigua and Barbuda"
578
  msgstr ""
579
 
580
+ #: includes/functions.php:797
581
  msgid "Argentina"
582
  msgstr ""
583
 
584
+ #: includes/functions.php:798
585
  msgid "Armenia"
586
  msgstr ""
587
 
588
+ #: includes/functions.php:799
589
  msgid "Aruba"
590
  msgstr ""
591
 
592
+ #: includes/functions.php:800
593
  msgid "Australia"
594
  msgstr ""
595
 
596
+ #: includes/functions.php:801
597
  msgid "Austria"
598
  msgstr ""
599
 
600
+ #: includes/functions.php:802
601
  msgid "Azerbaijan"
602
  msgstr ""
603
 
604
+ #: includes/functions.php:803
605
  msgid "Bahamas"
606
  msgstr ""
607
 
608
+ #: includes/functions.php:804
609
  msgid "Bahrain"
610
  msgstr ""
611
 
612
+ #: includes/functions.php:805
613
  msgid "Bangladesh"
614
  msgstr ""
615
 
616
+ #: includes/functions.php:806
617
  msgid "Barbados"
618
  msgstr ""
619
 
620
+ #: includes/functions.php:807
621
  msgid "Belarus"
622
  msgstr ""
623
 
624
+ #: includes/functions.php:808
625
  msgid "Belgium"
626
  msgstr ""
627
 
628
+ #: includes/functions.php:809
629
  msgid "Belize"
630
  msgstr ""
631
 
632
+ #: includes/functions.php:810
633
  msgid "Benin"
634
  msgstr ""
635
 
636
+ #: includes/functions.php:811
637
  msgid "Bermuda"
638
  msgstr ""
639
 
640
+ #: includes/functions.php:812
641
  msgid "Bhutan"
642
  msgstr ""
643
 
644
+ #: includes/functions.php:813
645
  msgid "Bolivia (Plurinational State of)"
646
  msgstr ""
647
 
648
+ #: includes/functions.php:814
649
  msgid "Bosnia and Herzegovina"
650
  msgstr ""
651
 
652
+ #: includes/functions.php:815
653
  msgid "Botswana"
654
  msgstr ""
655
 
656
+ #: includes/functions.php:816
657
  msgid "Bouvet Island"
658
  msgstr ""
659
 
660
+ #: includes/functions.php:817
661
  msgid "Brazil"
662
  msgstr ""
663
 
664
+ #: includes/functions.php:818
665
  msgid "British Indian Ocean Territory"
666
  msgstr ""
667
 
668
+ #: includes/functions.php:819
669
  msgid "Brunei Darussalam"
670
  msgstr ""
671
 
672
+ #: includes/functions.php:820
673
  msgid "Bulgaria"
674
  msgstr ""
675
 
676
+ #: includes/functions.php:821
677
  msgid "Burkina Faso"
678
  msgstr ""
679
 
680
+ #: includes/functions.php:822
681
  msgid "Burundi"
682
  msgstr ""
683
 
684
+ #: includes/functions.php:823
685
  msgid "Cabo Verde"
686
  msgstr ""
687
 
688
+ #: includes/functions.php:824
689
  msgid "Cambodia"
690
  msgstr ""
691
 
692
+ #: includes/functions.php:825
693
  msgid "Cameroon"
694
  msgstr ""
695
 
696
+ #: includes/functions.php:826
697
  msgid "Canada"
698
  msgstr ""
699
 
700
+ #: includes/functions.php:827
701
  msgid "Cayman Islands"
702
  msgstr ""
703
 
704
+ #: includes/functions.php:828
705
  msgid "Central African Republic"
706
  msgstr ""
707
 
708
+ #: includes/functions.php:829
709
  msgid "Chad"
710
  msgstr ""
711
 
712
+ #: includes/functions.php:830
713
  msgid "Chile"
714
  msgstr ""
715
 
716
+ #: includes/functions.php:831
717
  msgid "China"
718
  msgstr ""
719
 
720
+ #: includes/functions.php:832
721
  msgid "Christmas Island"
722
  msgstr ""
723
 
724
+ #: includes/functions.php:833
725
  msgid "Cocos (Keeling) Islands"
726
  msgstr ""
727
 
728
+ #: includes/functions.php:834
729
  msgid "Colombia"
730
  msgstr ""
731
 
732
+ #: includes/functions.php:835
733
  msgid "Comoros"
734
  msgstr ""
735
 
736
+ #: includes/functions.php:836
737
  msgid "Congo"
738
  msgstr ""
739
 
740
+ #: includes/functions.php:837
741
  msgid "Congo (Democratic Republic of the)"
742
  msgstr ""
743
 
744
+ #: includes/functions.php:838
745
  msgid "Cook Islands"
746
  msgstr ""
747
 
748
+ #: includes/functions.php:839
749
  msgid "Costa Rica"
750
  msgstr ""
751
 
752
+ #: includes/functions.php:840
753
  msgid "Côte d'Ivoire"
754
  msgstr ""
755
 
756
+ #: includes/functions.php:841
757
  msgid "Croatia"
758
  msgstr ""
759
 
760
+ #: includes/functions.php:842
761
  msgid "Cuba"
762
  msgstr ""
763
 
764
+ #: includes/functions.php:843
765
  msgid "Curaçao"
766
  msgstr ""
767
 
768
+ #: includes/functions.php:844
769
  msgid "Cyprus"
770
  msgstr ""
771
 
772
+ #: includes/functions.php:845
773
  msgid "Czech Republic"
774
  msgstr ""
775
 
776
+ #: includes/functions.php:846
777
  msgid "Denmark"
778
  msgstr ""
779
 
780
+ #: includes/functions.php:847
781
  msgid "Djibouti"
782
  msgstr ""
783
 
784
+ #: includes/functions.php:848
785
  msgid "Dominica"
786
  msgstr ""
787
 
788
+ #: includes/functions.php:849
789
  msgid "Dominican Republic"
790
  msgstr ""
791
 
792
+ #: includes/functions.php:850
793
  msgid "Ecuador"
794
  msgstr ""
795
 
796
+ #: includes/functions.php:851
797
  msgid "Egypt"
798
  msgstr ""
799
 
800
+ #: includes/functions.php:852
801
  msgid "El Salvador"
802
  msgstr ""
803
 
804
+ #: includes/functions.php:853
805
  msgid "Equatorial Guinea"
806
  msgstr ""
807
 
808
+ #: includes/functions.php:854
809
  msgid "Eritrea"
810
  msgstr ""
811
 
812
+ #: includes/functions.php:855
813
  msgid "Estonia"
814
  msgstr ""
815
 
816
+ #: includes/functions.php:856
817
  msgid "Ethiopia"
818
  msgstr ""
819
 
820
+ #: includes/functions.php:857
821
  msgid "Falkland Islands (Malvinas)"
822
  msgstr ""
823
 
824
+ #: includes/functions.php:858
825
  msgid "Faroe Islands"
826
  msgstr ""
827
 
828
+ #: includes/functions.php:859
829
  msgid "Fiji"
830
  msgstr ""
831
 
832
+ #: includes/functions.php:860
833
  msgid "Finland"
834
  msgstr ""
835
 
836
+ #: includes/functions.php:861
837
  msgid "France"
838
  msgstr ""
839
 
840
+ #: includes/functions.php:862
841
  msgid "French Guiana"
842
  msgstr ""
843
 
844
+ #: includes/functions.php:863
845
  msgid "French Polynesia"
846
  msgstr ""
847
 
848
+ #: includes/functions.php:864
849
  msgid "French Southern Territories"
850
  msgstr ""
851
 
852
+ #: includes/functions.php:865
853
  msgid "Gabon"
854
  msgstr ""
855
 
856
+ #: includes/functions.php:866
857
  msgid "Gambia"
858
  msgstr ""
859
 
860
+ #: includes/functions.php:867
861
  msgctxt "Country"
862
  msgid "Georgia"
863
  msgstr ""
864
 
865
+ #: includes/functions.php:868
866
  msgid "Germany"
867
  msgstr ""
868
 
869
+ #: includes/functions.php:869
870
  msgid "Ghana"
871
  msgstr ""
872
 
873
+ #: includes/functions.php:870
874
  msgid "Gibraltar"
875
  msgstr ""
876
 
877
+ #: includes/functions.php:871
878
  msgid "Greece"
879
  msgstr ""
880
 
881
+ #: includes/functions.php:872
882
  msgid "Greenland"
883
  msgstr ""
884
 
885
+ #: includes/functions.php:873
886
  msgid "Grenada"
887
  msgstr ""
888
 
889
+ #: includes/functions.php:874
890
  msgid "Guadeloupe"
891
  msgstr ""
892
 
893
+ #: includes/functions.php:875
894
  msgid "Guam"
895
  msgstr ""
896
 
897
+ #: includes/functions.php:876
898
  msgid "Guatemala"
899
  msgstr ""
900
 
901
+ #: includes/functions.php:877
902
  msgid "Guernsey"
903
  msgstr ""
904
 
905
+ #: includes/functions.php:878
906
  msgid "Guinea"
907
  msgstr ""
908
 
909
+ #: includes/functions.php:879
910
  msgid "Guinea-Bissau"
911
  msgstr ""
912
 
913
+ #: includes/functions.php:880
914
  msgid "Guyana"
915
  msgstr ""
916
 
917
+ #: includes/functions.php:881
918
  msgid "Haiti"
919
  msgstr ""
920
 
921
+ #: includes/functions.php:882
922
  msgid "Heard Island and McDonald Islands"
923
  msgstr ""
924
 
925
+ #: includes/functions.php:883
926
  msgid "Honduras"
927
  msgstr ""
928
 
929
+ #: includes/functions.php:884
930
  msgid "Hong Kong"
931
  msgstr ""
932
 
933
+ #: includes/functions.php:885
934
  msgid "Hungary"
935
  msgstr ""
936
 
937
+ #: includes/functions.php:886
938
  msgid "Iceland"
939
  msgstr ""
940
 
941
+ #: includes/functions.php:887
942
  msgid "India"
943
  msgstr ""
944
 
945
+ #: includes/functions.php:888
946
  msgid "Indonesia"
947
  msgstr ""
948
 
949
+ #: includes/functions.php:889
950
  msgid "Iran (Islamic Republic of)"
951
  msgstr ""
952
 
953
+ #: includes/functions.php:890
954
  msgid "Iraq"
955
  msgstr ""
956
 
957
+ #: includes/functions.php:891
958
  msgid "Ireland (Republic of)"
959
  msgstr ""
960
 
961
+ #: includes/functions.php:892
962
  msgid "Isle of Man"
963
  msgstr ""
964
 
965
+ #: includes/functions.php:893
966
  msgid "Israel"
967
  msgstr ""
968
 
969
+ #: includes/functions.php:894
970
  msgid "Italy"
971
  msgstr ""
972
 
973
+ #: includes/functions.php:895
974
  msgid "Jamaica"
975
  msgstr ""
976
 
977
+ #: includes/functions.php:896
978
  msgid "Japan"
979
  msgstr ""
980
 
981
+ #: includes/functions.php:897
982
  msgid "Jersey"
983
  msgstr ""
984
 
985
+ #: includes/functions.php:898
986
  msgid "Jordan"
987
  msgstr ""
988
 
989
+ #: includes/functions.php:899
990
  msgid "Kazakhstan"
991
  msgstr ""
992
 
993
+ #: includes/functions.php:900
994
  msgid "Kenya"
995
  msgstr ""
996
 
997
+ #: includes/functions.php:901
998
  msgid "Kiribati"
999
  msgstr ""
1000
 
1001
+ #: includes/functions.php:902
1002
  msgid "Korea (Democratic People's Republic of)"
1003
  msgstr ""
1004
 
1005
+ #: includes/functions.php:903
1006
  msgid "Korea (Republic of)"
1007
  msgstr ""
1008
 
1009
+ #: includes/functions.php:904
1010
  msgid "Kuwait"
1011
  msgstr ""
1012
 
1013
+ #: includes/functions.php:905
1014
  msgid "Kyrgyzstan"
1015
  msgstr ""
1016
 
1017
+ #: includes/functions.php:906
1018
  msgid "Lao People's Democratic Republic"
1019
  msgstr ""
1020
 
1021
+ #: includes/functions.php:907
1022
  msgid "Latvia"
1023
  msgstr ""
1024
 
1025
+ #: includes/functions.php:908
1026
  msgid "Lebanon"
1027
  msgstr ""
1028
 
1029
+ #: includes/functions.php:909
1030
  msgid "Lesotho"
1031
  msgstr ""
1032
 
1033
+ #: includes/functions.php:910
1034
  msgid "Liberia"
1035
  msgstr ""
1036
 
1037
+ #: includes/functions.php:911
1038
  msgid "Libya"
1039
  msgstr ""
1040
 
1041
+ #: includes/functions.php:912
1042
  msgid "Liechtenstein"
1043
  msgstr ""
1044
 
1045
+ #: includes/functions.php:913
1046
  msgid "Lithuania"
1047
  msgstr ""
1048
 
1049
+ #: includes/functions.php:914
1050
  msgid "Luxembourg"
1051
  msgstr ""
1052
 
1053
+ #: includes/functions.php:915
1054
  msgid "Macao"
1055
  msgstr ""
1056
 
1057
+ #: includes/functions.php:916
1058
  msgid "Macedonia (Republic of)"
1059
  msgstr ""
1060
 
1061
+ #: includes/functions.php:917
1062
  msgid "Madagascar"
1063
  msgstr ""
1064
 
1065
+ #: includes/functions.php:918
1066
  msgid "Malawi"
1067
  msgstr ""
1068
 
1069
+ #: includes/functions.php:919
1070
  msgid "Malaysia"
1071
  msgstr ""
1072
 
1073
+ #: includes/functions.php:920
1074
  msgid "Maldives"
1075
  msgstr ""
1076
 
1077
+ #: includes/functions.php:921
1078
  msgid "Mali"
1079
  msgstr ""
1080
 
1081
+ #: includes/functions.php:922
1082
  msgid "Malta"
1083
  msgstr ""
1084
 
1085
+ #: includes/functions.php:923
1086
  msgid "Marshall Islands"
1087
  msgstr ""
1088
 
1089
+ #: includes/functions.php:924
1090
  msgid "Martinique"
1091
  msgstr ""
1092
 
1093
+ #: includes/functions.php:925
1094
  msgid "Mauritania"
1095
  msgstr ""
1096
 
1097
+ #: includes/functions.php:926
1098
  msgid "Mauritius"
1099
  msgstr ""
1100
 
1101
+ #: includes/functions.php:927
1102
  msgid "Mayotte"
1103
  msgstr ""
1104
 
1105
+ #: includes/functions.php:928
1106
  msgid "Mexico"
1107
  msgstr ""
1108
 
1109
+ #: includes/functions.php:929
1110
  msgid "Micronesia (Federated States of)"
1111
  msgstr ""
1112
 
1113
+ #: includes/functions.php:930
1114
  msgid "Moldova (Republic of)"
1115
  msgstr ""
1116
 
1117
+ #: includes/functions.php:931
1118
  msgid "Monaco"
1119
  msgstr ""
1120
 
1121
+ #: includes/functions.php:932
1122
  msgid "Mongolia"
1123
  msgstr ""
1124
 
1125
+ #: includes/functions.php:933
1126
  msgid "Montenegro"
1127
  msgstr ""
1128
 
1129
+ #: includes/functions.php:934
1130
  msgid "Montserrat"
1131
  msgstr ""
1132
 
1133
+ #: includes/functions.php:935
1134
  msgid "Morocco"
1135
  msgstr ""
1136
 
1137
+ #: includes/functions.php:936
1138
  msgid "Mozambique"
1139
  msgstr ""
1140
 
1141
+ #: includes/functions.php:937
1142
  msgid "Myanmar"
1143
  msgstr ""
1144
 
1145
+ #: includes/functions.php:938
1146
  msgid "Namibia"
1147
  msgstr ""
1148
 
1149
+ #: includes/functions.php:939
1150
  msgid "Nauru"
1151
  msgstr ""
1152
 
1153
+ #: includes/functions.php:940
1154
  msgid "Nepal"
1155
  msgstr ""
1156
 
1157
+ #: includes/functions.php:941
1158
  msgid "Netherlands"
1159
  msgstr ""
1160
 
1161
+ #: includes/functions.php:942
1162
  msgid "New Caledonia"
1163
  msgstr ""
1164
 
1165
+ #: includes/functions.php:943
1166
  msgid "New Zealand"
1167
  msgstr ""
1168
 
1169
+ #: includes/functions.php:944
1170
  msgid "Nicaragua"
1171
  msgstr ""
1172
 
1173
+ #: includes/functions.php:945
1174
  msgid "Niger"
1175
  msgstr ""
1176
 
1177
+ #: includes/functions.php:946
1178
  msgid "Nigeria"
1179
  msgstr ""
1180
 
1181
+ #: includes/functions.php:947
1182
  msgid "Niue"
1183
  msgstr ""
1184
 
1185
+ #: includes/functions.php:948
1186
  msgid "Norfolk Island"
1187
  msgstr ""
1188
 
1189
+ #: includes/functions.php:949
1190
  msgid "Northern Mariana Islands"
1191
  msgstr ""
1192
 
1193
+ #: includes/functions.php:950
1194
  msgid "Norway"
1195
  msgstr ""
1196
 
1197
+ #: includes/functions.php:951
1198
  msgid "Oman"
1199
  msgstr ""
1200
 
1201
+ #: includes/functions.php:952
1202
  msgid "Pakistan"
1203
  msgstr ""
1204
 
1205
+ #: includes/functions.php:953
1206
  msgid "Palau"
1207
  msgstr ""
1208
 
1209
+ #: includes/functions.php:954
1210
  msgid "Palestine (State of)"
1211
  msgstr ""
1212
 
1213
+ #: includes/functions.php:955
1214
  msgid "Panama"
1215
  msgstr ""
1216
 
1217
+ #: includes/functions.php:956
1218
  msgid "Papua New Guinea"
1219
  msgstr ""
1220
 
1221
+ #: includes/functions.php:957
1222
  msgid "Paraguay"
1223
  msgstr ""
1224
 
1225
+ #: includes/functions.php:958
1226
  msgid "Peru"
1227
  msgstr ""
1228
 
1229
+ #: includes/functions.php:959
1230
  msgid "Philippines"
1231
  msgstr ""
1232
 
1233
+ #: includes/functions.php:960
1234
  msgid "Pitcairn"
1235
  msgstr ""
1236
 
1237
+ #: includes/functions.php:961
1238
  msgid "Poland"
1239
  msgstr ""
1240
 
1241
+ #: includes/functions.php:962
1242
  msgid "Portugal"
1243
  msgstr ""
1244
 
1245
+ #: includes/functions.php:963
1246
  msgid "Puerto Rico"
1247
  msgstr ""
1248
 
1249
+ #: includes/functions.php:964
1250
  msgid "Qatar"
1251
  msgstr ""
1252
 
1253
+ #: includes/functions.php:965
1254
  msgid "Réunion"
1255
  msgstr ""
1256
 
1257
+ #: includes/functions.php:966
1258
  msgid "Romania"
1259
  msgstr ""
1260
 
1261
+ #: includes/functions.php:967
1262
  msgid "Russian Federation"
1263
  msgstr ""
1264
 
1265
+ #: includes/functions.php:968
1266
  msgid "Rwanda"
1267
  msgstr ""
1268
 
1269
+ #: includes/functions.php:969
1270
  msgid "Saint Barthélemy"
1271
  msgstr ""
1272
 
1273
+ #: includes/functions.php:970
1274
  msgid "Saint Helena, Ascension and Tristan da Cunha"
1275
  msgstr ""
1276
 
1277
+ #: includes/functions.php:971
1278
  msgid "Saint Kitts and Nevis"
1279
  msgstr ""
1280
 
1281
+ #: includes/functions.php:972
1282
  msgid "Saint Lucia"
1283
  msgstr ""
1284
 
1285
+ #: includes/functions.php:973
1286
  msgid "Saint Martin (French part)"
1287
  msgstr ""
1288
 
1289
+ #: includes/functions.php:974
1290
  msgid "Saint Pierre and Miquelon"
1291
  msgstr ""
1292
 
1293
+ #: includes/functions.php:975
1294
  msgid "Saint Vincent and the Grenadines"
1295
  msgstr ""
1296
 
1297
+ #: includes/functions.php:976
1298
  msgid "Samoa"
1299
  msgstr ""
1300
 
1301
+ #: includes/functions.php:977
1302
  msgid "San Marino"
1303
  msgstr ""
1304
 
1305
+ #: includes/functions.php:978
1306
  msgid "Sao Tome and Principe"
1307
  msgstr ""
1308
 
1309
+ #: includes/functions.php:979
1310
  msgid "Saudi Arabia"
1311
  msgstr ""
1312
 
1313
+ #: includes/functions.php:980
1314
  msgid "Senegal"
1315
  msgstr ""
1316
 
1317
+ #: includes/functions.php:981
1318
  msgid "Serbia"
1319
  msgstr ""
1320
 
1321
+ #: includes/functions.php:982
1322
  msgid "Seychelles"
1323
  msgstr ""
1324
 
1325
+ #: includes/functions.php:983
1326
  msgid "Sierra Leone"
1327
  msgstr ""
1328
 
1329
+ #: includes/functions.php:984
1330
  msgid "Singapore"
1331
  msgstr ""
1332
 
1333
+ #: includes/functions.php:985
1334
  msgid "Sint Maarten (Dutch part)"
1335
  msgstr ""
1336
 
1337
+ #: includes/functions.php:986
1338
  msgid "Slovakia"
1339
  msgstr ""
1340
 
1341
+ #: includes/functions.php:987
1342
  msgid "Slovenia"
1343
  msgstr ""
1344
 
1345
+ #: includes/functions.php:988
1346
  msgid "Solomon Islands"
1347
  msgstr ""
1348
 
1349
+ #: includes/functions.php:989
1350
  msgid "Somalia"
1351
  msgstr ""
1352
 
1353
+ #: includes/functions.php:990
1354
  msgid "South Africa"
1355
  msgstr ""
1356
 
1357
+ #: includes/functions.php:991
1358
  msgid "South Georgia and the South Sandwich Islands"
1359
  msgstr ""
1360
 
1361
+ #: includes/functions.php:992
1362
  msgid "South Sudan"
1363
  msgstr ""
1364
 
1365
+ #: includes/functions.php:993
1366
  msgid "Spain"
1367
  msgstr ""
1368
 
1369
+ #: includes/functions.php:994
1370
  msgid "Sri Lanka"
1371
  msgstr ""
1372
 
1373
+ #: includes/functions.php:995
1374
  msgid "Sudan"
1375
  msgstr ""
1376
 
1377
+ #: includes/functions.php:996
1378
  msgid "Suriname"
1379
  msgstr ""
1380
 
1381
+ #: includes/functions.php:997
1382
  msgid "Svalbard and Jan Mayen"
1383
  msgstr ""
1384
 
1385
+ #: includes/functions.php:998
1386
  msgid "Swaziland"
1387
  msgstr ""
1388
 
1389
+ #: includes/functions.php:999
1390
  msgid "Sweden"
1391
  msgstr ""
1392
 
1393
+ #: includes/functions.php:1000
1394
  msgid "Switzerland"
1395
  msgstr ""
1396
 
1397
+ #: includes/functions.php:1001
1398
  msgid "Syrian Arab Republic"
1399
  msgstr ""
1400
 
1401
+ #: includes/functions.php:1002
1402
  msgid "Taiwan, Province of China"
1403
  msgstr ""
1404
 
1405
+ #: includes/functions.php:1003
1406
  msgid "Tajikistan"
1407
  msgstr ""
1408
 
1409
+ #: includes/functions.php:1004
1410
  msgid "Tanzania (United Republic of)"
1411
  msgstr ""
1412
 
1413
+ #: includes/functions.php:1005
1414
  msgid "Thailand"
1415
  msgstr ""
1416
 
1417
+ #: includes/functions.php:1006
1418
  msgid "Timor-Leste"
1419
  msgstr ""
1420
 
1421
+ #: includes/functions.php:1007
1422
  msgid "Togo"
1423
  msgstr ""
1424
 
1425
+ #: includes/functions.php:1008
1426
  msgid "Tokelau"
1427
  msgstr ""
1428
 
1429
+ #: includes/functions.php:1009
1430
  msgid "Tonga"
1431
  msgstr ""
1432
 
1433
+ #: includes/functions.php:1010
1434
  msgid "Trinidad and Tobago"
1435
  msgstr ""
1436
 
1437
+ #: includes/functions.php:1011
1438
  msgid "Tunisia"
1439
  msgstr ""
1440
 
1441
+ #: includes/functions.php:1012
1442
  msgid "Turkey"
1443
  msgstr ""
1444
 
1445
+ #: includes/functions.php:1013
1446
  msgid "Turkmenistan"
1447
  msgstr ""
1448
 
1449
+ #: includes/functions.php:1014
1450
  msgid "Turks and Caicos Islands"
1451
  msgstr ""
1452
 
1453
+ #: includes/functions.php:1015
1454
  msgid "Tuvalu"
1455
  msgstr ""
1456
 
1457
+ #: includes/functions.php:1016
1458
  msgid "Uganda"
1459
  msgstr ""
1460
 
1461
+ #: includes/functions.php:1017
1462
  msgid "Ukraine"
1463
  msgstr ""
1464
 
1465
+ #: includes/functions.php:1018
1466
  msgid "United Arab Emirates"
1467
  msgstr ""
1468
 
1469
+ #: includes/functions.php:1019
1470
  msgid "United Kingdom of Great Britain and Northern Ireland"
1471
  msgstr ""
1472
 
1473
+ #: includes/functions.php:1020
1474
  msgid "United States of America"
1475
  msgstr ""
1476
 
1477
+ #: includes/functions.php:1021
1478
  msgid "United States Minor Outlying Islands"
1479
  msgstr ""
1480
 
1481
+ #: includes/functions.php:1022
1482
  msgid "Uruguay"
1483
  msgstr ""
1484
 
1485
+ #: includes/functions.php:1023
1486
  msgid "Uzbekistan"
1487
  msgstr ""
1488
 
1489
+ #: includes/functions.php:1024
1490
  msgid "Vanuatu"
1491
  msgstr ""
1492
 
1493
+ #: includes/functions.php:1025
1494
  msgid "Vatican City State"
1495
  msgstr ""
1496
 
1497
+ #: includes/functions.php:1026
1498
  msgid "Venezuela (Bolivarian Republic of)"
1499
  msgstr ""
1500
 
1501
+ #: includes/functions.php:1027
1502
  msgid "Viet Nam"
1503
  msgstr ""
1504
 
1505
+ #: includes/functions.php:1028
1506
  msgid "Virgin Islands (British)"
1507
  msgstr ""
1508
 
1509
+ #: includes/functions.php:1029
1510
  msgid "Virgin Islands (U.S.)"
1511
  msgstr ""
1512
 
1513
+ #: includes/functions.php:1030
1514
  msgid "Wallis and Futuna"
1515
  msgstr ""
1516
 
1517
+ #: includes/functions.php:1031
1518
  msgid "Western Sahara"
1519
  msgstr ""
1520
 
1521
+ #: includes/functions.php:1032
1522
  msgid "Yemen"
1523
  msgstr ""
1524
 
1525
+ #: includes/functions.php:1033
1526
  msgid "Zambia"
1527
  msgstr ""
1528
 
1529
+ #: includes/functions.php:1034
1530
  msgid "Zimbabwe"
1531
  msgstr ""
1532
 
1533
+ #: includes/functions.php:1049
1534
  msgid "January"
1535
  msgstr ""
1536
 
1537
+ #: includes/functions.php:1050
1538
  msgid "February"
1539
  msgstr ""
1540
 
1541
+ #: includes/functions.php:1051
1542
  msgid "March"
1543
  msgstr ""
1544
 
1545
+ #: includes/functions.php:1052
1546
  msgid "April"
1547
  msgstr ""
1548
 
1549
+ #: includes/functions.php:1053
1550
  msgid "May"
1551
  msgstr ""
1552
 
1553
+ #: includes/functions.php:1054
1554
  msgid "June"
1555
  msgstr ""
1556
 
1557
+ #: includes/functions.php:1055
1558
  msgid "July"
1559
  msgstr ""
1560
 
1561
+ #: includes/functions.php:1056
1562
  msgid "August"
1563
  msgstr ""
1564
 
1565
+ #: includes/functions.php:1057
1566
  msgid "September"
1567
  msgstr ""
1568
 
1569
+ #: includes/functions.php:1058
1570
  msgid "October"
1571
  msgstr ""
1572
 
1573
+ #: includes/functions.php:1059
1574
  msgid "November"
1575
  msgstr ""
1576
 
1577
+ #: includes/functions.php:1060
1578
  msgid "December"
1579
  msgstr ""
1580
 
1581
+ #: includes/functions.php:1075
1582
  msgid "Sunday"
1583
  msgstr ""
1584
 
1585
+ #: includes/functions.php:1076
1586
  msgid "Monday"
1587
  msgstr ""
1588
 
1589
+ #: includes/functions.php:1077
1590
  msgid "Tuesday"
1591
  msgstr ""
1592
 
1593
+ #: includes/functions.php:1078
1594
  msgid "Wednesday"
1595
  msgstr ""
1596
 
1597
+ #: includes/functions.php:1079
1598
  msgid "Thursday"
1599
  msgstr ""
1600
 
1601
+ #: includes/functions.php:1080
1602
  msgid "Friday"
1603
  msgstr ""
1604
 
1605
+ #: includes/functions.php:1081
1606
  msgid "Saturday"
1607
  msgstr ""
1608
 
1609
+ #: includes/functions.php:1695
1610
+ #: includes/class-frontend.php:1291
1611
+ #: includes/admin/class-settings.php:473
1612
  msgid "This field is required."
1613
  msgstr ""
1614
 
1652
  msgid "Display form description"
1653
  msgstr ""
1654
 
1655
+ #. translators: %s - URL to a non-amp version of a page with the form.
1656
+ #: includes/class-frontend.php:161
1657
+ msgid "<a href=\"%s\">Go to the full page</a> to view and submit the form."
1658
+ msgstr ""
1659
+
1660
+ #: includes/class-frontend.php:1292
1661
+ #: includes/admin/class-settings.php:479
1662
  msgid "Please enter a valid URL."
1663
  msgstr ""
1664
 
1665
+ #: includes/class-frontend.php:1293
1666
+ #: includes/admin/class-settings.php:485
1667
  msgid "Please enter a valid email address."
1668
  msgstr ""
1669
 
1670
+ #: includes/class-frontend.php:1294
1671
+ #: includes/admin/class-settings.php:491
1672
  msgid "Did you mean {suggestion}?"
1673
  msgstr ""
1674
 
1675
+ #: includes/class-frontend.php:1295
1676
  msgid "Click to accept this suggestion."
1677
  msgstr ""
1678
 
1679
+ #: includes/class-frontend.php:1296
1680
+ #: includes/admin/class-settings.php:497
1681
  #: includes/fields/class-number.php:162
1682
  msgid "Please enter a valid number."
1683
  msgstr ""
1684
 
1685
+ #: includes/class-frontend.php:1297
1686
+ #: includes/admin/class-settings.php:503
1687
  msgid "Field values do not match."
1688
  msgstr ""
1689
 
1690
+ #: includes/class-frontend.php:1298
1691
  msgid "File type is not allowed."
1692
  msgstr ""
1693
 
1694
+ #: includes/class-frontend.php:1299
1695
  msgid "File exceeds max size allowed."
1696
  msgstr ""
1697
 
1698
+ #: includes/class-frontend.php:1300
1699
  msgid "Please enter time in 12-hour AM/PM format (eg 8:45 AM)."
1700
  msgstr ""
1701
 
1702
+ #: includes/class-frontend.php:1301
1703
  msgid "Please enter time in 24-hour format (eg 22:45)."
1704
  msgstr ""
1705
 
1706
+ #: includes/class-frontend.php:1302
1707
  msgid "Payment is required."
1708
  msgstr ""
1709
 
1710
+ #: includes/class-frontend.php:1303
1711
  msgid "Please enter a valid credit card number."
1712
  msgstr ""
1713
 
1714
+ #: includes/class-frontend.php:1304
1715
  msgid "Please enter a valid phone number."
1716
  msgstr ""
1717
 
1718
+ #: includes/class-frontend.php:1305
1719
+ #: includes/class-process.php:558
1720
  msgid "The total size of the selected files {totalSize} Mb exceeds the allowed limit {maxSize} Mb."
1721
  msgstr ""
1722
 
1723
+ #: includes/class-frontend.php:1306
1724
+ #: includes/admin/class-settings.php:509
1725
+ #: includes/fields/class-checkbox.php:592
1726
  msgid "You have exceeded the number of allowed selections: {#}."
1727
  msgstr ""
1728
 
 
 
 
 
 
1729
  #: includes/providers/class-base.php:93
1730
  msgid "Connection"
1731
  msgstr ""
2676
  msgid "If your license has been upgraded or is incorrect, <a href=\"#\" id=\"wpforms-setting-license-key-refresh\">click here to force a refresh</a>."
2677
  msgstr ""
2678
 
2679
+ #: includes/admin/settings-api.php:352
2680
  #: includes/fields/class-base.php:820
2681
  #: includes/fields/class-base.php:951
2682
  msgid "Upload Image"
3432
  msgstr ""
3433
 
3434
  #: includes/admin/admin.php:382
3435
+ msgid "<strong>Please Note:</strong> Support for PHP 5.3 to 5.5 will be discontinued in 2019. After this, if no further action is taken, WPForms functionality will be disabled."
3436
  msgstr ""
3437
 
3438
  #: includes/admin/admin.php:404
3702
 
3703
  #: includes/admin/builder/panels/class-settings.php:42
3704
  #: includes/admin/builder/panels/class-settings.php:82
3705
+ #: includes/admin/class-settings.php:167
3706
+ #: includes/admin/class-settings.php:300
3707
  msgid "General"
3708
  msgstr ""
3709
 
3751
  msgid "Enable anti-spam honeypot"
3752
  msgstr ""
3753
 
3754
+ #: includes/admin/builder/panels/class-settings.php:155
3755
+ msgid "Enable Google Checkbox v2 reCAPTCHA"
3756
+ msgstr ""
3757
+
3758
  #: includes/admin/builder/panels/class-settings.php:158
3759
  msgid "Enable Google Invisible v2 reCAPTCHA"
3760
  msgstr ""
3761
 
3762
+ #: includes/admin/builder/panels/class-settings.php:161
3763
+ msgid "Enable Google v3 reCAPTCHA"
3764
  msgstr ""
3765
 
3766
+ #: includes/admin/builder/panels/class-settings.php:177
3767
  msgid "Enable dynamic fields population"
3768
  msgstr ""
3769
 
3770
+ #: includes/admin/builder/panels/class-settings.php:179
3771
  msgid "How to use Dynamic Field Population"
3772
  msgstr ""
3773
 
3774
+ #: includes/admin/builder/panels/class-settings.php:187
3775
+ msgid "Enable AJAX form submission"
3776
+ msgstr ""
3777
+
3778
+ #: includes/admin/builder/panels/class-settings.php:189
3779
+ msgid "Enables form submission without page reload."
3780
+ msgstr ""
3781
+
3782
  #: includes/admin/builder/panels/class-fields.php:22
3783
  msgid "Fields"
3784
  msgstr ""
4170
  msgid "Save Form"
4171
  msgstr ""
4172
 
4173
+ #: includes/admin/class-settings.php:145
4174
  msgid "Settings were successfully saved."
4175
  msgstr ""
4176
 
4177
+ #: includes/admin/class-settings.php:169
4178
+ #: includes/admin/class-settings.php:174
4179
+ #: includes/admin/class-settings.php:179
4180
+ #: includes/admin/class-settings.php:184
4181
+ #: includes/admin/class-settings.php:194
4182
  msgid "Save Settings"
4183
  msgstr ""
4184
 
4185
+ #: includes/admin/class-settings.php:172
4186
+ #: includes/admin/class-settings.php:368
4187
+ #: includes/admin/class-settings.php:483
4188
  #: includes/templates/class-subscribe.php:44
4189
  #: includes/templates/class-suggestion.php:41
4190
  #: includes/templates/class-contact.php:42
4194
  msgid "Email"
4195
  msgstr ""
4196
 
4197
+ #: includes/admin/class-settings.php:177
4198
+ #: includes/admin/class-settings.php:408
4199
  msgid "reCAPTCHA"
4200
  msgstr ""
4201
 
4202
+ #: includes/admin/class-settings.php:182
4203
  msgid "Validation"
4204
  msgstr ""
4205
 
4206
+ #: includes/admin/class-settings.php:187
4207
+ #: includes/admin/class-settings.php:516
4208
+ #: includes/admin/class-settings.php:523
4209
  msgid "Integrations"
4210
  msgstr ""
4211
 
4212
+ #: includes/admin/class-settings.php:192
4213
+ #: includes/admin/class-settings.php:532
4214
  msgid "Misc"
4215
  msgstr ""
4216
 
4217
+ #: includes/admin/class-settings.php:233
4218
  msgid "reCAPTCHA is a free anti-spam service from Google which helps to protect your website from spam and abuse while letting real people pass through with ease."
4219
  msgstr ""
4220
 
4221
+ #: includes/admin/class-settings.php:234
4222
+ msgid "Google offers 3 versions of reCAPTCHA (all supported within WPForms):"
4223
+ msgstr ""
4224
+
4225
+ #: includes/admin/class-settings.php:239
4226
+ msgid "<strong>v2 Checkbox reCAPTCHA</strong>: Prompts users to check a box to prove they're human."
4227
+ msgstr ""
4228
+
4229
+ #: includes/admin/class-settings.php:248
4230
+ msgid "<strong>v2 Invisible reCAPTCHA</strong>: Uses advanced technology to detect real users without requiring any input."
4231
+ msgstr ""
4232
+
4233
+ #: includes/admin/class-settings.php:257
4234
+ msgid "<strong>v3 reCAPTCHA</strong>: Uses a behind-the-scenes scoring system to detect abusive traffic, and lets you decide the minimum passing score. Recommended for advanced use only (or if using Google AMP)."
4235
  msgstr ""
4236
 
4237
+ #: includes/admin/class-settings.php:264
4238
+ msgid "Sites already using one type of reCAPTCHA will need to create new site keys before switching to a different option."
4239
  msgstr ""
4240
 
4241
  #. translators: %s - WPForms.com Setup Captcha URL.
4242
+ #: includes/admin/class-settings.php:270
4243
  msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Read our walk through</a> to learn more and for step-by-step directions."
4244
  msgstr ""
4245
 
4246
+ #: includes/admin/class-settings.php:288
4247
  msgid "License"
4248
  msgstr ""
4249
 
4250
+ #: includes/admin/class-settings.php:288
4251
  msgid "Your license key provides access to updates and addons."
4252
  msgstr ""
4253
 
4254
+ #: includes/admin/class-settings.php:295
4255
  msgid "License Key"
4256
  msgstr ""
4257
 
4258
+ #: includes/admin/class-settings.php:307
4259
  msgid "Include Form Styling"
4260
  msgstr ""
4261
 
4262
  #. translators: %s - WPForms.com documentation URL.
4263
+ #: includes/admin/class-settings.php:311
4264
  msgid "Determines which CSS files to load for the site (<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">please see our tutorial for full details</a>). Unless experienced with CSS or instructed by support, \"Base and Form Theme Styling\" is recommended."
4265
  msgstr ""
4266
 
4267
+ #: includes/admin/class-settings.php:326
4268
  msgid "Base and form theme styling"
4269
  msgstr ""
4270
 
4271
+ #: includes/admin/class-settings.php:327
4272
  msgid "Base styling only"
4273
  msgstr ""
4274
 
4275
+ #: includes/admin/class-settings.php:328
4276
  msgid "No styling"
4277
  msgstr ""
4278
 
4279
+ #: includes/admin/class-settings.php:333
4280
  msgid "Load Assets Globally"
4281
  msgstr ""
4282
 
4283
+ #: includes/admin/class-settings.php:334
4284
  msgid "Check this if you would like to load WPForms assets site-wide. Only check if your site is having compatibility issues or instructed to by support."
4285
  msgstr ""
4286
 
4287
+ #: includes/admin/class-settings.php:339
4288
  msgid "GDPR"
4289
  msgstr ""
4290
 
4291
+ #: includes/admin/class-settings.php:346
4292
  msgid "GDPR Enhancements"
4293
  msgstr ""
4294
 
4295
  #. translators: %s - WPForms.com GDPR documentation URL.
4296
+ #: includes/admin/class-settings.php:350
4297
  msgid "Check this to turn on GDPR related features and enhancements. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Read our GDPR documentation</a> to learn more."
4298
  msgstr ""
4299
 
4300
+ #: includes/admin/class-settings.php:375
4301
  msgid "Template"
4302
  msgstr ""
4303
 
4304
+ #: includes/admin/class-settings.php:376
4305
  msgid "Determines how email notifications will be formatted. HTML Templates are the default."
4306
  msgstr ""
4307
 
4308
+ #: includes/admin/class-settings.php:380
4309
  msgid "HTML Template"
4310
  msgstr ""
4311
 
4312
+ #: includes/admin/class-settings.php:381
4313
  msgid "Plain text"
4314
  msgstr ""
4315
 
4316
+ #: includes/admin/class-settings.php:386
4317
  msgid "Header Image"
4318
  msgstr ""
4319
 
4320
+ #: includes/admin/class-settings.php:387
4321
  msgid "Upload or choose a logo to be displayed at the top of email notifications.<br>Recommended size is 300x100 or smaller for best support on all devices."
4322
  msgstr ""
4323
 
4324
+ #: includes/admin/class-settings.php:392
4325
  msgid "Background Color"
4326
  msgstr ""
4327
 
4328
+ #: includes/admin/class-settings.php:393
4329
  msgid "Customize the background color of the HTML email template."
4330
  msgstr ""
4331
 
4332
+ #: includes/admin/class-settings.php:399
4333
  msgid "Carbon Copy"
4334
  msgstr ""
4335
 
4336
+ #: includes/admin/class-settings.php:400
4337
  msgid "Check this if you would like to enable the ability to CC: email addresses in the form notification settings."
4338
  msgstr ""
4339
 
4340
+ #: includes/admin/class-settings.php:415
4341
  msgid "Type"
4342
  msgstr ""
4343
 
4344
+ #: includes/admin/class-settings.php:419
4345
  msgid "Checkbox reCAPTCHA v2"
4346
  msgstr ""
4347
 
4348
+ #: includes/admin/class-settings.php:420
4349
  msgid "Invisible reCAPTCHA v2"
4350
  msgstr ""
4351
 
4352
+ #: includes/admin/class-settings.php:421
4353
+ msgid "reCAPTCHA v3"
4354
+ msgstr ""
4355
+
4356
+ #: includes/admin/class-settings.php:426
4357
  msgid "Site Key"
4358
  msgstr ""
4359
 
4360
+ #: includes/admin/class-settings.php:431
4361
  msgid "Secret Key"
4362
  msgstr ""
4363
 
4364
+ #: includes/admin/class-settings.php:436
4365
+ msgid "Fail Message"
4366
+ msgstr ""
4367
+
4368
+ #: includes/admin/class-settings.php:437
4369
+ msgid "The message displayed to users who fail the reCAPTCHA verification process."
4370
+ msgstr ""
4371
+
4372
+ #: includes/admin/class-settings.php:439
4373
+ #: includes/class-process.php:176
4374
+ msgid "Google reCAPTCHA verification failed, please try again later."
4375
+ msgstr ""
4376
+
4377
+ #: includes/admin/class-settings.php:443
4378
+ msgid "Score Threshold"
4379
+ msgstr ""
4380
+
4381
+ #: includes/admin/class-settings.php:444
4382
+ msgid "reCAPTCHA v3 returns a score (1.0 is very likely a good interaction, 0.0 is very likely a bot). If the score less than or equal to this threshold, the form submission will be blocked and the message above will be displayed."
4383
+ msgstr ""
4384
+
4385
+ #: includes/admin/class-settings.php:451
4386
+ msgid "0.4"
4387
+ msgstr ""
4388
+
4389
+ #: includes/admin/class-settings.php:455
4390
  msgid "No-Conflict Mode"
4391
  msgstr ""
4392
 
4393
+ #: includes/admin/class-settings.php:456
4394
  msgid "When checked, other reCAPTCHA occurrences are forcefully removed, to prevent conflicts. Only check if your site is having compatibility issues or instructed to by support."
4395
  msgstr ""
4396
 
4397
+ #: includes/admin/class-settings.php:464
4398
  msgid "Validation Messages"
4399
  msgstr ""
4400
 
4401
+ #: includes/admin/class-settings.php:464
4402
  msgid "These messages are displayed to the users as they fill out a form in real-time."
4403
  msgstr ""
4404
 
4405
+ #: includes/admin/class-settings.php:471
4406
  #: includes/fields/class-base.php:717
4407
  msgid "Required"
4408
  msgstr ""
4409
 
4410
+ #: includes/admin/class-settings.php:477
4411
  msgid "Website URL"
4412
  msgstr ""
4413
 
4414
+ #: includes/admin/class-settings.php:489
4415
  msgid "Email Suggestion"
4416
  msgstr ""
4417
 
4418
+ #: includes/admin/class-settings.php:495
4419
  msgid "Number"
4420
  msgstr ""
4421
 
4422
+ #: includes/admin/class-settings.php:501
4423
  msgid "Confirm Value"
4424
  msgstr ""
4425
 
4426
+ #: includes/admin/class-settings.php:507
4427
  msgid "Checkbox Selection Limit"
4428
  msgstr ""
4429
 
4430
+ #: includes/admin/class-settings.php:516
4431
+ #: includes/admin/class-settings.php:523
4432
  msgid "Manage integrations with popular providers such as Constant Contact, MailChimp, Zapier, and more."
4433
  msgstr ""
4434
 
4435
+ #: includes/admin/class-settings.php:539
4436
  msgid "Hide Announcements"
4437
  msgstr ""
4438
 
4439
+ #: includes/admin/class-settings.php:540
4440
  msgid "Check this if you would like to hide plugin announcements and update details."
4441
  msgstr ""
4442
 
4443
+ #: includes/admin/class-settings.php:545
4444
  msgid "Uninstall WPForms"
4445
  msgstr ""
4446
 
4447
+ #: includes/admin/class-settings.php:546
4448
+ msgid "Check this if you would like to remove ALL WPForms data upon plugin deletion. All forms and settings will be unrecoverable."
4449
  msgstr ""
4450
 
4451
  #: includes/admin/class-am-deactivation-survey.php:172
5095
  msgid "Enter text for the confirmation field placeholder."
5096
  msgstr ""
5097
 
5098
+ #: includes/fields/class-email.php:420
5099
+ msgid "The provided email is not valid."
5100
+ msgstr ""
5101
+
5102
+ #: includes/fields/class-email.php:422
5103
+ msgid "The provided emails do not match."
5104
+ msgstr ""
5105
+
5106
  #: includes/fields/class-radio.php:22
5107
  msgid "Multiple Choice"
5108
  msgstr ""
5115
  msgid "Single Line Text"
5116
  msgstr ""
5117
 
5118
+ #: includes/fields/class-text.php:251
5119
  msgid "Input Mask"
5120
  msgstr ""
5121
 
5122
+ #: includes/fields/class-text.php:252
5123
  msgid "Enter your custom input mask."
5124
  msgstr ""
5125
 
5126
+ #: includes/fields/class-text.php:253
5127
  msgid "See Examples & Docs"
5128
  msgstr ""
5129
 
5130
+ #: includes/class-process.php:139
5131
  msgid "Invalid form."
5132
  msgstr ""
5133
 
5134
+ #: includes/class-process.php:216
 
 
 
 
 
 
 
 
5135
  msgid "Uploaded files combined size exceeds allowed maximum."
5136
  msgstr ""
5137
 
5138
+ #: includes/class-process.php:276
5139
+ #: includes/class-process.php:337
5140
+ #: includes/class-process.php:557
5141
  msgid "Form has not been submitted, please see the errors below."
5142
  msgstr ""
5143
 
5144
+ #: includes/class-process.php:288
5145
  msgid "WPForms honeypot field triggered."
5146
  msgstr ""
5147
 
5148
+ #: includes/class-process.php:494
5149
+ msgid "Redirecting…"
5150
+ msgstr ""
5151
+
5152
  #: includes/integrations.php:32
5153
  msgid "Select a form to display"
5154
  msgstr ""
lite/wpforms-lite.php CHANGED
@@ -987,6 +987,21 @@ class WPForms_Lite {
987
  'desc' => 'Unlock more leads by capturing partial entries from your forms. Easily follow up with interested leads and turn them into loyal customers.',
988
  'icon' => 'addon-icon-form-abandonment.png',
989
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
990
  array(
991
  'name' => 'Geolocation',
992
  'desc' => 'WPForms Geolocation addon allows you to collect and store your website visitors geolocation data along with their form submission.',
@@ -1017,6 +1032,11 @@ class WPForms_Lite {
1017
  'desc' => 'WPForms Post Submissions addon makes it easy to have user-submitted content in WordPress. This front-end post submission form allow your users to submit blog posts without logging into the admin area.',
1018
  'icon' => 'addon-icon-post-submissions.png',
1019
  ),
 
 
 
 
 
1020
  array(
1021
  'name' => 'Stripe',
1022
  'desc' => 'WPForms Stripe addon allows you to connect your WordPress site with Stripe to easily collect payments, donations, and online orders.',
987
  'desc' => 'Unlock more leads by capturing partial entries from your forms. Easily follow up with interested leads and turn them into loyal customers.',
988
  'icon' => 'addon-icon-form-abandonment.png',
989
  ),
990
+ array(
991
+ 'name' => 'Form Locker',
992
+ 'desc' => 'WPForms\' Form Locker addon allows you to lock your WordPress forms with various permissions and access control rules including passwords, members-only, specific date / time, max entry limit, and more.',
993
+ 'icon' => 'addon-icons-locker.png',
994
+ ),
995
+ array(
996
+ 'name' => 'Form Pages',
997
+ 'desc' => 'Want to improve your form conversions? WPForms Form Pages addon allows you to create completely custom "distraction-free" form landing pages to boost conversions (without writing any code).',
998
+ 'icon' => 'addon-icon-form-pages.png',
999
+ ),
1000
+ array(
1001
+ 'name' => 'Form Templates Pack',
1002
+ 'desc' => 'Choose from a huge variety of pre-built templates for every niche and industry, so you can build all kinds of web forms in minutes, not hours.',
1003
+ 'icon' => 'addon-icon-form-templates-pack.png',
1004
+ ),
1005
  array(
1006
  'name' => 'Geolocation',
1007
  'desc' => 'WPForms Geolocation addon allows you to collect and store your website visitors geolocation data along with their form submission.',
1032
  'desc' => 'WPForms Post Submissions addon makes it easy to have user-submitted content in WordPress. This front-end post submission form allow your users to submit blog posts without logging into the admin area.',
1033
  'icon' => 'addon-icon-post-submissions.png',
1034
  ),
1035
+ array(
1036
+ 'name' => 'Signatures',
1037
+ 'desc' => 'WPForms Signatures addon makes it easy for users to sign your forms. This WordPress signatures plugin will allow your users to sign contracts and other agreements with their mouse or touch screen.',
1038
+ 'icon' => 'addon-icon-signatures.png',
1039
+ ),
1040
  array(
1041
  'name' => 'Stripe',
1042
  'desc' => 'WPForms Stripe addon allows you to connect your WordPress site with Stripe to easily collect payments, donations, and online orders.',
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === Contact Form by WPForms - Drag & Drop Form Builder for WordPress ===
2
  Contributors: wpforms, jaredatch, smub, slaFFik
3
- Tags: contact form, contact form plugin, forms, form builder, custom form, contact button, contact me, custom contact form, form manager, form, forms builder, forms creator, captcha, recaptcha, Akismet, email form, web form, feedback form, payment form, survey form, donation form, email submit form, message form, mailchimp, mailchimp form, aweber, aweber form, paypal, paypal form, stripe, stripe form, getresponse, getresponse form, email subscription, contact form widget, user registration form, wordpress registration, wordpress login form
4
  Requires at least: 4.8
5
- Tested up to: 5.1
6
- Stable tag: 1.5.2.3
7
  Requires PHP: 5.3.3
8
  License: GNU General Public License v2.0 or later
9
 
@@ -15,13 +15,13 @@ The best WordPress contact form plugin. Drag & Drop online form builder that hel
15
 
16
  We believe that you shouldn't have to hire a developer to create a WordPress contact form. That's why we built <a href="https://wpforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="WPForms">WPForms</a>, a drag & drop WordPress form builder that's EASY and POWERFUL.
17
 
18
- WPForms allows you to create beautiful contact forms, subscription forms, payment forms, and other type of forms for your site in minutes, not hours!
19
 
20
  At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.
21
 
22
  WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).
23
 
24
- WPForms' contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the market.
25
 
26
  > <strong>WPForms Pro</strong><br />
27
  > This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. <a href="https://wpforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="WPForms">Click here to purchase the best premium WordPress contact form plugin now!</a>
@@ -45,10 +45,12 @@ Building contact forms in WordPress can be time consuming. Why?
45
 
46
  Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it's often not necessary to create a contact form completely from scratch unless you really want to.
47
 
48
- Whether you're looking to create a simple contact form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.
49
 
50
  WPForms comes with <a href="https://wpforms.com/features/form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">pre-built form templates</a> to help you save time. You can add, remove, or re-arrange fields as necessary.
51
 
 
 
52
  = Mobile Ready, SEO Friendly and Optimized for Speed =
53
 
54
  WPForms' contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed - Yes, WPForms is one of the fastest WordPress contact form plugin.
@@ -57,7 +59,7 @@ You can embed your contact form on any page with optimized title and description
57
 
58
  = All the Fields & Features that You Need to Succeed =
59
 
60
- From radio buttons to file uploads to multi-page contact forms, we have all the fields you need.
61
 
62
  You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.
63
 
@@ -99,6 +101,8 @@ You can easily customize your contact forms with our section dividers, HTML bloc
99
 
100
  We also knew that our developer friends may want to extend contact forms further. That's why WPForms come with tons of hooks and filters to create custom functionality.
101
 
 
 
102
  = Full WPForms Feature List =
103
 
104
  * <a href="https://wpforms.com/features/drag-drop-online-form-builder/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Online Form Builder</a> - Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
@@ -109,7 +113,7 @@ We also knew that our developer friends may want to extend contact forms further
109
  * <a href="https://wpforms.com/features/instant-notifications/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Instant Form Notification</a> - Quickly respond to incoming inquiries with our instant contact form notification system.
110
  * <a href="https://wpforms.com/features/form-confirmation/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Smart Form Confirmation</a> - Show a custom success message, or redirect users to a custom thank you page.
111
  * <a href="https://wpforms.com/features/file-uploads/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">File Uploads</a> - Collect files and media through your contact forms with File Uploads.
112
- * <a href="https://wpforms.com/features/multi-page-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Multi-Page Forms</a> - Split long forms into multiple pages to improve user experience.
113
  * <a href="https://wpforms.com/features/conditional-logic/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Smart Conditional Logic</a> - Show or hide fields and contact form sections based on user behavior.
114
  * <a href="https://wpforms.com/addons/signature-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Signature Forms</a> - Create signature forms or add the signature field to your contact form, application form, booking form, etc.
115
  * <a href="https://wpforms.com/addons/user-registration-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">User Registration Forms</a> - Create custom user registration form and custom login form in WordPress.
@@ -120,7 +124,7 @@ We also knew that our developer friends may want to extend contact forms further
120
  * <a href="https://wpforms.com/addons/form-abandonment-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Form Abandonment</a> - Unlock more leads and grow your business with partial-form submission.
121
  * <a href="https://wpforms.com/addons/form-locker-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Form Locker</a> - Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
122
  * <a href="https://wpforms.com/addons/offline-forms-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Offline Forms</a> - Let your visitors save their entered data offline and submit when their internet connection is restored.
123
- * <a href="https://wpforms.com/addons/form-pages-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Form Landing Pages</a> - Create "distraction-free" form landing pages to boost conversions. Great Google Forms alternative.
124
  * <a href="https://wpforms.com/addons/conversational-forms-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Conversational Forms</a> - Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
125
 
126
  = Integrations =
@@ -199,7 +203,7 @@ WPForms drag & drop form builder combined with our addons is the most powerful W
199
  * Simple Contact Forms
200
  * Advanced Contact Forms
201
  * Custom Contact Forms
202
- * Multi-Page Contact Forms
203
  * Dynamic Contact Forms (where fields change based on user's answers)
204
  * Request a Quote Contact Form
205
  * Job Application Contact Form
@@ -237,16 +241,133 @@ WPForms drag & drop form builder combined with our addons is the most powerful W
237
  * Scholarship Application Forms
238
  * File Download Forms
239
  * Employment Verification Forms
 
 
 
240
  * Make a Referral Contact Form
241
  * Volunteer Registration Contact Form
242
  * Membership Registration Forms
243
- * Custom Survey Forms
 
244
  * Poll Forms
245
  * Offline Contact Form
246
  * Password-Protected Contact Form
247
  * Members Only Contact Form
248
  * Conversational Forms like Typeform
249
- * Form Pages like Google Forms
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
 
251
  = I'd like access to all features. How can I get them? =
252
 
@@ -256,6 +377,21 @@ You can get access to more features, addons and support by <a href="https://wpfo
256
 
257
  Yes, WPForms has full translation and localization support via the wpforms textdomain. All .mo and .po translation files should go into the languages folder in the base of the plugin. The same is true for every WPForms Addon as well.
258
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
259
  == Notes ==
260
 
261
  WPForms is absolutely, positively the most <a href="https://wpforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="Best WordPress contact form plugin">beginner friendly WordPress contact form plugin</a> on the market. It is both easy and powerful.
@@ -272,6 +408,17 @@ Syed Balkhi
272
 
273
  == Changelog ==
274
 
 
 
 
 
 
 
 
 
 
 
 
275
  = 1.5.2.3 =
276
  - Fixed: PHP error if checkbox field is empty when form is submitted.
277
 
@@ -344,4 +491,4 @@ Syed Balkhi
344
  - Fixed: reCAPTCHA compatibility when form is inside OptinMonster popup.
345
  - Fixed: Gutenberg block returning error if no forms have been created.
346
 
347
- [See changelog for all versions](https://plugins.svn.wordpress.org/wpforms-lite/trunk/changelog.txt).
1
  === Contact Form by WPForms - Drag & Drop Form Builder for WordPress ===
2
  Contributors: wpforms, jaredatch, smub, slaFFik
3
+ Tags: contact form, contact form plugin, forms, form builder, custom form, contact button, contact me, custom contact form, form manager, form, forms builder, forms creator, captcha, recaptcha, Akismet, email form, web form, feedback form, payment form, survey form, donation form, email submit form, message form, mailchimp, mailchimp form, aweber, aweber form, paypal, paypal form, stripe, stripe form, getresponse, getresponse form, email subscription, contact form widget, user registration form, wordpress registration, wordpress login form, feedback
4
  Requires at least: 4.8
5
+ Tested up to: 5.2
6
+ Stable tag: 1.5.3
7
  Requires PHP: 5.3.3
8
  License: GNU General Public License v2.0 or later
9
 
15
 
16
  We believe that you shouldn't have to hire a developer to create a WordPress contact form. That's why we built <a href="https://wpforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="WPForms">WPForms</a>, a drag & drop WordPress form builder that's EASY and POWERFUL.
17
 
18
+ WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other type of forms for your site in minutes, not hours!
19
 
20
  At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.
21
 
22
  WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).
23
 
24
+ WPForms' contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.
25
 
26
  > <strong>WPForms Pro</strong><br />
27
  > This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. <a href="https://wpforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="WPForms">Click here to purchase the best premium WordPress contact form plugin now!</a>
45
 
46
  Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it's often not necessary to create a contact form completely from scratch unless you really want to.
47
 
48
+ Whether you're looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.
49
 
50
  WPForms comes with <a href="https://wpforms.com/features/form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">pre-built form templates</a> to help you save time. You can add, remove, or re-arrange fields as necessary.
51
 
52
+ See <a href="https://wpforms.com/demo/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">150+ Pre-Made WPForms Form Template Demo</a>
53
+
54
  = Mobile Ready, SEO Friendly and Optimized for Speed =
55
 
56
  WPForms' contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed - Yes, WPForms is one of the fastest WordPress contact form plugin.
59
 
60
  = All the Fields & Features that You Need to Succeed =
61
 
62
+ From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.
63
 
64
  You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.
65
 
101
 
102
  We also knew that our developer friends may want to extend contact forms further. That's why WPForms come with tons of hooks and filters to create custom functionality.
103
 
104
+ Since contact forms are essential for marketing, WPForms is a must have plugin for every website!
105
+
106
  = Full WPForms Feature List =
107
 
108
  * <a href="https://wpforms.com/features/drag-drop-online-form-builder/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Online Form Builder</a> - Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
113
  * <a href="https://wpforms.com/features/instant-notifications/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Instant Form Notification</a> - Quickly respond to incoming inquiries with our instant contact form notification system.
114
  * <a href="https://wpforms.com/features/form-confirmation/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Smart Form Confirmation</a> - Show a custom success message, or redirect users to a custom thank you page.
115
  * <a href="https://wpforms.com/features/file-uploads/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">File Uploads</a> - Collect files and media through your contact forms with File Uploads.
116
+ * <a href="https://wpforms.com/features/multi-page-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Multi-Page Forms</a> - Split long forms into multiple pages with progress bar to improve user experience.
117
  * <a href="https://wpforms.com/features/conditional-logic/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Smart Conditional Logic</a> - Show or hide fields and contact form sections based on user behavior.
118
  * <a href="https://wpforms.com/addons/signature-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Signature Forms</a> - Create signature forms or add the signature field to your contact form, application form, booking form, etc.
119
  * <a href="https://wpforms.com/addons/user-registration-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">User Registration Forms</a> - Create custom user registration form and custom login form in WordPress.
124
  * <a href="https://wpforms.com/addons/form-abandonment-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Form Abandonment</a> - Unlock more leads and grow your business with partial-form submission.
125
  * <a href="https://wpforms.com/addons/form-locker-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Form Locker</a> - Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
126
  * <a href="https://wpforms.com/addons/offline-forms-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Offline Forms</a> - Let your visitors save their entered data offline and submit when their internet connection is restored.
127
+ * <a href="https://wpforms.com/addons/form-pages-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Form Landing Pages</a> - Create "distraction-free" form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
128
  * <a href="https://wpforms.com/addons/conversational-forms-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Conversational Forms</a> - Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
129
 
130
  = Integrations =
203
  * Simple Contact Forms
204
  * Advanced Contact Forms
205
  * Custom Contact Forms
206
+ * Multi-Page Contact Forms with Progress Bar
207
  * Dynamic Contact Forms (where fields change based on user's answers)
208
  * Request a Quote Contact Form
209
  * Job Application Contact Form
241
  * Scholarship Application Forms
242
  * File Download Forms
243
  * Employment Verification Forms
244
+ * Employee Feedback Form
245
+ * Customer Feedback Form
246
+ * Generic Feedback Form
247
  * Make a Referral Contact Form
248
  * Volunteer Registration Contact Form
249
  * Membership Registration Forms
250
+ * Address Book Contact Forms
251
+ * Custom Survey Forms like Survey Monkey
252
  * Poll Forms
253
  * Offline Contact Form
254
  * Password-Protected Contact Form
255
  * Members Only Contact Form
256
  * Conversational Forms like Typeform
257
+ * Custom Form Landing Page like Google Forms and Wufoo
258
+
259
+ = Which Form Fields Does WPForms offer? =
260
+
261
+ We made WPForms form builder to be both easy and powerful.
262
+
263
+ Here are the contact form fields that comes with WPForms Form Builder (also known as Standard Fields):
264
+
265
+ * Text Field
266
+ * Paragraph Text (Textarea)
267
+ * Dropdown Field
268
+ * Multiple Choice (Radio Buttons)
269
+ * Checkboxes
270
+ * Numbers Field
271
+ * Name Field
272
+ * Email Address Field
273
+
274
+ Here is a list of our advanced contact form builder fields (Fancy Fields):
275
+
276
+ * Website / URL Field
277
+ * Address Field
278
+ * Password Field
279
+ * Smart Phone Field with international format verification
280
+ * Date / Time Field
281
+ * Hidden Field
282
+ * HTML Field - add Custom HTML inside your form
283
+ * File Upload - Great for File Upload Form
284
+ * Page Break Field - Great for Multi Page Contact Form with Progress Bar.
285
+ * Section Divider - Great for Long Contact Forms
286
+ * Signature Field - Great for Contracts and Booking Forms
287
+ * Star Rating - Great for Survey Forms and Polls
288
+ * Likert Scale - Great for Survey Forms
289
+ * Net Promoter Score (NPS Field) - Great for Survey Forms
290
+ * Questions CAPTCHA - Great for Preventing Contact Form Spam
291
+ * Math CAPTCHA - Great for Preventing Contact Form Spam
292
+ * Google ReCAPTCHA - Great for Preventing Contact Form Spam
293
+
294
+ Here is a list of our Payment Fields that will help you create a order form, donation form, booking form, and other payment forms:
295
+
296
+ * Single Item
297
+ * Multiple Items
298
+ * Checkbox Items
299
+ * Dropdown Items
300
+ * Total (Calculation Field)
301
+ * Credit Card (Stripe)
302
+ * PayPal
303
+
304
+ = Can I integrate WPForms with my CRM or Email Marketing Service? =
305
+
306
+ Yes, WPForms offers seamless integration with over 1,000+ popular marketing and CRM software.
307
+
308
+ You can easily send data from your contact form and other WordPress forms to your favorite CRM, email newsletter, and other marketing platforms.
309
+
310
+ Here is a list of our popular marketing integrations:
311
+
312
+ * MailChimp
313
+ * Constant Contact
314
+ * AWeber
315
+ * Drip
316
+ * Campaign Monitor
317
+ * GetResponse
318
+ * Zapier
319
+
320
+ Using our Zapier integration, you can easily connect WPForms with over 1000+ marketing apps including:
321
+
322
+ * Salesforce CRM
323
+ * PipeDrive CRM
324
+ * HubSpot Email Marketing
325
+ * HubSpot CRM
326
+ * Google Sheets
327
+ * Active Campaign
328
+ * Zoho CRM
329
+ * Zoho Mail
330
+ * Zoho Invoice
331
+ * Agile CRM
332
+ * Slack
333
+ * Trello
334
+ * Infusionsoft by Keap
335
+ * Microsoft Excel
336
+ * Dropbox
337
+ * HelpScout
338
+ * Zendesk
339
+ * Freshbooks
340
+ * Freshsales
341
+ * Intercom
342
+ * Click Funnels
343
+ * Microsoft Dynamics 365 CRM
344
+ * Capsule CRM
345
+ * Insightly CRM
346
+ * Printfection
347
+ * Acuity Scheduling
348
+ * Quickbooks Online
349
+
350
+ WPForms was voted Zapier's 8th fastest growing app in the world.
351
+
352
+ = Can I create a Payment Form with WPForms =
353
+
354
+ Yes, WPForms is not your average contact form plugin. You can use it to create any type of form including payment forms.
355
+
356
+ We make it easy for you to accept payments using Stripe and PayPal.
357
+
358
+ Our Stripe integration helps you easily accept credit card payments online.
359
+
360
+ Our PayPal integration allows you to accept PayPal payments online.
361
+
362
+ = Can I Import / Export Forms with WPForms?
363
+
364
+ Yes, WPForms makes it easy to import / export your contact forms and other WordPress forms created with WPForms form builder. This is incredibly useful for developers and agencies who are building websites for clients.
365
+
366
+ You can also create custom form templates that you can use on client websites. For more see our documentation.
367
+
368
+ Aside from that, WPForms also allows you to import froms from other WordPress Contact Form plugins such as Contact Form 7, Ninja Forms, and Pirate Forms.
369
+
370
+ If you're not happy with your WordPress contact form plugin, then definitely give WPForms a try!
371
 
372
  = I'd like access to all features. How can I get them? =
373
 
377
 
378
  Yes, WPForms has full translation and localization support via the wpforms textdomain. All .mo and .po translation files should go into the languages folder in the base of the plugin. The same is true for every WPForms Addon as well.
379
 
380
+ = Does WPForms include spam protection? =
381
+
382
+ Yes, WPForms includes a spam "honeypot" which is enabled on all forms by default.
383
+
384
+ Additionally, Google reCAPTCHA is also supported and can be setup at WPForms > Settings > reCAPTCHA.
385
+
386
+ WPForms is fully compatible with all versions of Google reCAPTCHA:
387
+
388
+ * Checkbox reCAPTCHA v2
389
+ * Invisible reCAPTCHA v2
390
+ * reCAPTCHA v3
391
+
392
+ Lastly, <a href="https://wpforms.com/addons/custom-catpcha-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Custom Captchas</a> are available which allow you to create math or question based captchas for your contact forms.
393
+
394
+
395
  == Notes ==
396
 
397
  WPForms is absolutely, positively the most <a href="https://wpforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="Best WordPress contact form plugin">beginner friendly WordPress contact form plugin</a> on the market. It is both easy and powerful.
408
 
409
  == Changelog ==
410
 
411
+ = 1.5.3 =
412
+ - Added: AJAX form submissions.
413
+ - Added: Full support and compatiblity with Google AMP.
414
+ - Added: Google reCAPTCHA v3.
415
+ - Changed: WPForms uninstall script for better cleanup process.
416
+ - Changed: Email field mailcheck feature to offer additional controls. New filters: `wpforms_mailcheck_enabled`, `wpforms_mailcheck_domains`, and `wpforms_mailcheck_toplevel_domains`.
417
+ - Fixed: Special characters aren't encoded when Smart Tags are processed in query string.
418
+ - Fixed: Fields with Image choices are not working with some Android and older desktop browsers.
419
+ - Fixed: Form Builder: Several alert modals are displayed in batch if multiple providers have configuration issues.
420
+ - Fixed: WP_Post object is returned from `wpforms()->form->get()` if form data is requested with a non-WPForms post ID.
421
+
422
  = 1.5.2.3 =
423
  - Fixed: PHP error if checkbox field is empty when form is submitted.
424
 
491
  - Fixed: reCAPTCHA compatibility when form is inside OptinMonster popup.
492
  - Fixed: Gutenberg block returning error if no forms have been created.
493
 
494
+ [See changelog for all versions](https://plugins.svn.wordpress.org/wpforms-lite/trunk/changelog.txt).
uninstall.php CHANGED
@@ -10,6 +10,8 @@
10
  * - wpforms_log post type posts and post_meta
11
  * - wpforms post type posts and post_meta
12
  * - WPForms settings/options
 
 
13
  * - WPForms Uploads
14
  *
15
  * @package WPForms
@@ -17,9 +19,13 @@
17
  * @since 1.4.5
18
  * @license GPL-2.0+
19
  * @copyright Copyright (c) 2018, WPForms LLC
 
 
20
  */
21
 
22
- // Exit if accessed directly.
 
 
23
  if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
24
  exit;
25
  }
@@ -42,42 +48,40 @@ $wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'wpforms_entry_meta' );
42
  $wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'wpforms_entry_fields' );
43
 
44
  // Delete Preview page.
45
- $preview = get_option( 'wpforms_preview_page', false );
46
- if ( ! empty( $preview ) ) {
47
- wp_delete_post( $preview, true );
48
  }
49
 
50
  // Delete wpforms and wpforms_log post type posts/post_meta.
51
- $posts = get_posts( array(
52
- 'post_type' => array( 'wpforms_log', 'wpforms' ),
53
- 'post_status' => 'any',
54
- 'numberposts' => -1,
55
- 'fields' => 'ids',
56
- ) );
57
- if ( $posts ) {
58
- foreach ( $posts as $post ) {
59
- wp_delete_post( $post, true );
 
 
60
  }
61
  }
62
 
63
  // Delete plugin settings.
64
- delete_option( 'wpforms_version' );
65
- delete_option( 'wpforms_providers' );
66
- delete_option( 'wpforms_license' );
67
- delete_option( 'wpforms_license_updates' );
68
- delete_option( 'wpforms_settings' );
69
- delete_option( 'wpforms_version_upgraded_from' );
70
- delete_option( 'wpforms_preview_page' );
71
- delete_option( 'wpforms_zapier_apikey' );
72
- delete_option( 'wpforms_activated' );
73
- delete_option( 'wpforms_review' );
74
- delete_option( 'wpforms_imported' );
75
 
76
  // Remove any transients we've left behind.
77
- $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE '\_transient\_wpforms\_%'" );
78
- $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE '\_site\_transient\_wpforms\_%'" );
79
- $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE '\_transient\_timeout\_wpforms\_%'" );
80
- $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE '\_site\_transient\_timeout\_wpforms\_%'" );
81
 
82
  // Remove uploaded files.
83
  $uploads_directory = wp_upload_dir();
10
  * - wpforms_log post type posts and post_meta
11
  * - wpforms post type posts and post_meta
12
  * - WPForms settings/options
13
+ * - WPForms user meta
14
+ * - WPForms term meta
15
  * - WPForms Uploads
16
  *
17
  * @package WPForms
19
  * @since 1.4.5
20
  * @license GPL-2.0+
21
  * @copyright Copyright (c) 2018, WPForms LLC
22
+ *
23
+ * @var WP_Filesystem_Base $wp_filesystem
24
  */
25
 
26
+ // phpcs:disable WordPress.DB.DirectDatabaseQuery
27
+
28
+ // Exit if accessed directly.
29
  if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
30
  exit;
31
  }
48
  $wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'wpforms_entry_fields' );
49
 
50
  // Delete Preview page.
51
+ $preview_page = get_option( 'wpforms_preview_page', false );
52
+ if ( ! empty( $preview_page ) ) {
53
+ wp_delete_post( $preview_page, true );
54
  }
55
 
56
  // Delete wpforms and wpforms_log post type posts/post_meta.
57
+ $wpforms_posts = get_posts(
58
+ array(
59
+ 'post_type' => array( 'wpforms_log', 'wpforms' ),
60
+ 'post_status' => 'any',
61
+ 'numberposts' => -1,
62
+ 'fields' => 'ids',
63
+ )
64
+ );
65
+ if ( $wpforms_posts ) {
66
+ foreach ( $wpforms_posts as $wpforms_post ) {
67
+ wp_delete_post( $wpforms_post, true );
68
  }
69
  }
70
 
71
  // Delete plugin settings.
72
+ $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE 'wpforms\_%'" );
73
+
74
+ // Delete plugin user meta.
75
+ $wpdb->query( "DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE 'wpforms\_%'" );
76
+
77
+ // Delete plugin term meta.
78
+ $wpdb->query( "DELETE FROM {$wpdb->termmeta} WHERE meta_key LIKE 'wpforms\_%'" );
 
 
 
 
79
 
80
  // Remove any transients we've left behind.
81
+ $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_transient\_wpforms\_%'" );
82
+ $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_site\_transient\_wpforms\_%'" );
83
+ $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_transient\_timeout\_wpforms\_%'" );
84
+ $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_site\_transient\_timeout\_wpforms\_%'" );
85
 
86
  // Remove uploaded files.
87
  $uploads_directory = wp_upload_dir();
wpforms.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: Beginner friendly WordPress contact form plugin. Use our Drag & Drop form builder to create your WordPress forms.
6
  * Author: WPForms
7
  * Author URI: https://wpforms.com
8
- * Version: 1.5.2.3
9
  * Text Domain: wpforms-lite
10
  * Domain Path: languages
11
  *
@@ -36,7 +36,7 @@ if ( ! defined( 'ABSPATH' ) ) {
36
 
37
  // Plugin version.
38
  if ( ! defined( 'WPFORMS_VERSION' ) ) {
39
- define( 'WPFORMS_VERSION', '1.5.2.3' );
40
  }
41
 
42
  // Plugin Folder Path.
5
  * Description: Beginner friendly WordPress contact form plugin. Use our Drag & Drop form builder to create your WordPress forms.
6
  * Author: WPForms
7
  * Author URI: https://wpforms.com
8
+ * Version: 1.5.3
9
  * Text Domain: wpforms-lite
10
  * Domain Path: languages
11
  *
36
 
37
  // Plugin version.
38
  if ( ! defined( 'WPFORMS_VERSION' ) ) {
39
+ define( 'WPFORMS_VERSION', '1.5.3' );
40
  }
41
 
42
  // Plugin Folder Path.