my-orders-tickets-widget 1.0.0-beta.39 → 1.0.0-beta.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2266,7 +2266,7 @@ const Filter = _ref => {
2266
2266
  variant: "text",
2267
2267
  onClick: handleFilterReset,
2268
2268
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.cleanButton,
2269
- children: "Clean"
2269
+ children: t("filter.clear")
2270
2270
  })
2271
2271
  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Divider, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_BadgeFeatureFilter__WEBPACK_IMPORTED_MODULE_8__["default"], {
2272
2272
  values: filter[_actions__WEBPACK_IMPORTED_MODULE_9__.FILTER_VAR_BADGE_FEATURE],
@@ -5604,7 +5604,8 @@ const AssignHeader = _ref => {
5604
5604
  let {
5605
5605
  inProgress,
5606
5606
  ticket,
5607
- userEmail
5607
+ userEmail,
5608
+ onClose
5608
5609
  } = _ref;
5609
5610
  const {
5610
5611
  t
@@ -5623,10 +5624,25 @@ const AssignHeader = _ref => {
5623
5624
  };
5624
5625
  const getHeaderNote = () => {
5625
5626
  if (inProgress) {
5626
- if (assignedToYou) {
5627
- return t("ticket_assign.header_assign.answer_your_eq");
5628
- }
5629
- return t("ticket_assign.header_assign.answer_others_eq");
5627
+ const transKey = assignedToYou ? "ticket_assign.header_assign.answer_your_eq" : "ticket_assign.header_assign.answer_others_eq";
5628
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(react_i18next__WEBPACK_IMPORTED_MODULE_2__.Trans, {
5629
+ i18nKey: transKey,
5630
+ components: {
5631
+ link:
5632
+ /*#__PURE__*/
5633
+ // eslint-disable-next-line jsx-a11y/anchor-is-valid
5634
+ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Link, {
5635
+ component: "button",
5636
+ variant: "body1",
5637
+ onClick: onClose,
5638
+ sx: {
5639
+ color: "text.secondary",
5640
+ fontWeight: 700
5641
+ },
5642
+ children: "complete later"
5643
+ })
5644
+ }
5645
+ });
5630
5646
  }
5631
5647
  return "";
5632
5648
  };
@@ -5709,7 +5725,8 @@ const ReassignHeader = _ref => {
5709
5725
  inProgress,
5710
5726
  allowsDelegate,
5711
5727
  ticket,
5712
- userEmail
5728
+ userEmail,
5729
+ onClose
5713
5730
  } = _ref;
5714
5731
  const {
5715
5732
  t
@@ -5730,10 +5747,25 @@ const ReassignHeader = _ref => {
5730
5747
  if (!inProgress) {
5731
5748
  return allowsDelegate ? t("ticket_assign.header_reassign.choose_option") : t("ticket_assign.header_reassign.choose_option_no_delegate");
5732
5749
  }
5733
- if (assignedToYou) {
5734
- return t("ticket_assign.header_reassign.answer_your_eq");
5735
- }
5736
- return t("ticket_assign.header_reassign.answer_others_eq");
5750
+ const transKey = assignedToYou ? "ticket_assign.header_reassign.answer_your_eq" : "ticket_assign.header_reassign.answer_others_eq";
5751
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(react_i18next__WEBPACK_IMPORTED_MODULE_2__.Trans, {
5752
+ i18nKey: transKey,
5753
+ components: {
5754
+ link:
5755
+ /*#__PURE__*/
5756
+ // eslint-disable-next-line jsx-a11y/anchor-is-valid
5757
+ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Link, {
5758
+ component: "button",
5759
+ variant: "body1",
5760
+ onClick: onClose,
5761
+ sx: {
5762
+ color: "text.secondary",
5763
+ fontWeight: 700
5764
+ },
5765
+ children: "complete later"
5766
+ })
5767
+ }
5768
+ });
5737
5769
  };
5738
5770
  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
5739
5771
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.wrapper,
@@ -6036,7 +6068,8 @@ const TicketAssign = _ref => {
6036
6068
  inProgress: assignationInProgress,
6037
6069
  allowsDelegate: allowsDelegate,
6038
6070
  ticket: ticket,
6039
- userEmail: userProfile.email
6071
+ userEmail: userProfile.email,
6072
+ onClose: onCloseEQForm
6040
6073
  }), assignationInProgress ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_AssignEQForm__WEBPACK_IMPORTED_MODULE_8__["default"], {
6041
6074
  ticket: ticket,
6042
6075
  summit: summit,
@@ -6313,10 +6346,13 @@ __webpack_require__.r(__webpack_exports__);
6313
6346
  /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
6314
6347
  /* harmony import */ var openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! openstack-uicore-foundation/lib/components/raw-html */ "openstack-uicore-foundation/lib/components/raw-html");
6315
6348
  /* harmony import */ var openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3__);
6316
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../constants */ "./src/components/TicketDetail/constants.js");
6317
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketDetail/components/RegistrationDisclaimer/styles.module.scss");
6318
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
6319
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
6349
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-i18next */ "react-i18next");
6350
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_4__);
6351
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../constants */ "./src/components/TicketDetail/constants.js");
6352
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketDetail/components/RegistrationDisclaimer/styles.module.scss");
6353
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
6354
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
6355
+
6320
6356
 
6321
6357
 
6322
6358
 
@@ -6331,7 +6367,10 @@ const RegistrationDisclaimer = _ref => {
6331
6367
  isDisabled = false,
6332
6368
  isRequired = true
6333
6369
  } = _ref;
6334
- const name = _constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.disclaimerAccepted;
6370
+ const {
6371
+ t
6372
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_4__.useTranslation)();
6373
+ const name = _constants__WEBPACK_IMPORTED_MODULE_5__.TICKET_ATTENDEE_KEYS.disclaimerAccepted;
6335
6374
  const {
6336
6375
  errors,
6337
6376
  values,
@@ -6342,30 +6381,28 @@ const RegistrationDisclaimer = _ref => {
6342
6381
  const value = values[name];
6343
6382
  const error = touched[name] && Boolean(errors[name]);
6344
6383
  const helperText = touched[name] && errors[name];
6345
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
6346
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.wrapper,
6347
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControl, {
6384
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
6385
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.wrapper,
6386
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)((openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3___default()), {
6387
+ children: disclaimer
6388
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControl, {
6348
6389
  fullWidth: true,
6349
6390
  error: error,
6350
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControlLabel, {
6351
- control: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Checkbox, {
6391
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControlLabel, {
6392
+ control: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Checkbox, {
6352
6393
  name: name,
6353
6394
  checked: !!value,
6354
- label: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)((openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3___default()), {
6355
- children: disclaimer
6356
- }),
6395
+ label: t("ticket_assign.extra_questions_form.disclaimer_label"),
6357
6396
  onChange: handleChange,
6358
6397
  onBlur: handleBlur
6359
6398
  }),
6360
- label: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)((openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3___default()), {
6361
- children: disclaimer
6362
- }),
6399
+ label: t("ticket_assign.extra_questions_form.disclaimer_label"),
6363
6400
  disabled: isDisabled,
6364
6401
  required: isRequired
6365
- }), error && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormHelperText, {
6402
+ }), error && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormHelperText, {
6366
6403
  children: helperText !== null && helperText !== void 0 ? helperText : " "
6367
6404
  })]
6368
- })
6405
+ })]
6369
6406
  });
6370
6407
  };
6371
6408
  RegistrationDisclaimer.propTypes = {
@@ -7263,7 +7300,7 @@ const useScrollToError = (formik, containerId) => {
7263
7300
 
7264
7301
  // sort elements by position
7265
7302
  const elementsSorted = errorArray.reduce((result, error) => {
7266
- const element = document.querySelector("input[name='".concat(error, "']"));
7303
+ const element = document.querySelector("[name='".concat(error, "']"));
7267
7304
  if (!element) return result;
7268
7305
  const elRect = element.getBoundingClientRect();
7269
7306
  result.push({
@@ -9384,7 +9421,7 @@ module.exports = require("yup");
9384
9421
  \**********************************/
9385
9422
  /***/ ((module) => {
9386
9423
 
9387
- module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You can answer this questions, or select complete later.","answer_others_eq":"You can answer their questions for them, or select complete later to let them do it."},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the old address that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the old address that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","answer_your_eq":"You can answer this questions, or select complete later.","answer_others_eq":"You can answer their questions for them, or select complete later to let them do it."},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","complete_info":"You can answer their questions for them, or select complete later to let them do it.","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save"},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
9424
+ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You can answer this questions, or select <link/>.","answer_others_eq":"You can answer their questions for them, or select <link/> to let them do it."},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the old address that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the old address that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","answer_your_eq":"You can answer this questions, or select <link/>.","answer_others_eq":"You can answer their questions for them, or select <link/> to let them do it."},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
9388
9425
 
9389
9426
  /***/ }),
9390
9427
 
@@ -9394,7 +9431,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sig
9394
9431
  \**********************************/
9395
9432
  /***/ ((module) => {
9396
9433
 
9397
- module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You can answer this questions, or select complete later.","answer_others_eq":"You can answer their questions for them, or select complete later to let them do it."},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the old address that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the old address that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","answer_your_eq":"You can answer this questions, or select complete later.","answer_others_eq":"You can answer their questions for them, or select complete later to let them do it."},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","complete_info":"You can answer their questions for them, or select complete later to let them do it.","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save"},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
9434
+ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You can answer this questions, or select <link/>.","answer_others_eq":"You can answer their questions for them, or select <link/> to let them do it."},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the old address that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the old address that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","answer_your_eq":"You can answer this questions, or select <link/>.","answer_others_eq":"You can answer their questions for them, or select <link/> to let them do it."},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
9398
9435
 
9399
9436
  /***/ })
9400
9437
 
@@ -9574,4 +9611,4 @@ MyOrdersMyTicketsWidget.propTypes = {
9574
9611
  /******/ })()
9575
9612
  ;
9576
9613
  });
9577
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0g1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUM4WDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkI5WDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1JoTTtBQUNBO0FBQ0E7QUFDQTtBQUNnRTs7Ozs7Ozs7Ozs7Ozs7O0FDSmhFO0FBQ0E7QUFDbUM7Ozs7Ozs7Ozs7O0FDRm5DOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7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QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Bc3NpZ25FUUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbVRoZW1lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0Fzc2lnbmVkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQmFkZ2VGZWF0dXJlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRnJlZVBhaWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Qcm9tb0NvZGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU3RhdHVzRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvVGlja2V0VHlwZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0VGFicy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VHZXRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9zdW1taXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvdGlja2V0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGNyZWF0ZUFjdGlvbixcbiAgZGVsZXRlUmVxdWVzdCxcbiAgZ2V0UmVxdWVzdCxcbiAgcHV0UmVxdWVzdCxcbiAgc3RhcnRMb2FkaW5nLFxuICBzdG9wTG9hZGluZ1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IHsgb2JqZWN0VG9RdWVyeVN0cmluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEVSUk9SX0NPREVTLFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVCxcbiAgVEFCU1xufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfQVBJX0VSUk9SID0gXCJSRVNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BUElfRVJST1IgPSBcIlNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfRklMVEVSID0gXCJDSEFOR0VfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX1NPUlQgPSBcIkNIQU5HRV9TT1JUXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9NWV9BU1NJR05FRF9USUNLRVRTID0gXCJHRVRfTVlfQVNTSUdORURfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgREVMRUdBVEVfVElDS0VUID0gXCJERUxFR0FURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0VGlja2V0ID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEVycm9yID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9BUElfRVJST1IpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgPSBcIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgPSBcIkZJTFRFUl9WQVJfVElDS0VUX1RZUEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCA9IFwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyA9IFwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1BST01PQ09ERSA9IFwiRklMVEVSX1ZBUl9QUk9NT0NPREVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0ZSRUVfUEFJRCA9IFwiRklMVEVSX1ZBUl9GUkVFX1BBSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSIC8gU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgY2hhbmdlRmlsdGVyID0gKGZpbHRlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfRklMVEVSKShmaWx0ZXIpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGFuZ2VTb3J0ID0gKHNvcnQpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX1NPUlQpKHNvcnQpKTtcbn07XG5cbi8vIEZJTFRFUi9TT1JUIFBBUlNFXG5jb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmosIGN1cnJlbnRUYWIpID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYGNyZWF0ZWRbXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19iYWRnZV9mZWF0dXJlc19pZFwiXG4gICAgICAgIDogXCJiYWRnZV9mZWF0dXJlc19pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX3R5cGVfaWRcIiA6IFwidGlja2V0X3R5cGVfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19hc3NpZ25lZF90b1wiIDogXCJhc3NpZ25lZF90b1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRH1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19vd25lcl9zdGF0dXNcIiA6IFwib3duZXJfc3RhdHVzXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID0gY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcImFtb3VudFwiIDogXCJmaW5hbF9hbW91bnRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQgPT09IFwiRnJlZVwiID8gXCI9PTBcIiA6IFwiPjBcIn1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19wcm9tb19jb2RlXCIgOiBcInByb21vX2NvZGVcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREV9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGBudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWApO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5jb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT4gKGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCIpO1xuXG4vLyBwYXlsb2FkOiB7IGh0dHBDb2RlLCB0aXRsZSwgaHRtbDogY29udGVudCwgdHlwZSB9XG5jb25zdCBlcnJvckhhbmRsZXJOb3RpZnkgPSAocGF5bG9hZCwgY2FsbGJhY2spID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FQSV9FUlJPUikocGF5bG9hZCkpO1xuICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG59O1xuXG5jb25zdCBjdXN0b21BdXRoRXJyb3JIYW5kbGVyID0gKGVyciwgcmVzKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goYXV0aEVycm9ySGFuZGxlcihlcnIsIHJlcywgZXJyb3JIYW5kbGVyTm90aWZ5KSk7XG59O1xuXG5jb25zdCBjdXN0b21GZXRjaEVycm9ySGFuZGxlciA9IChyZXNwb25zZSkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG4gIGxldCBtc2c7XG4gIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAzXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnVzZXJfbm90X2F1dGh6XCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwMVwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXNzaW9uX2V4cGlyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDEyXCJdOlxuICAgICAgbXNnID0gXCJcIjtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oa2V5KSkge1xuICAgICAgICAgIG1zZyA9IGAke21zZ30gJHtrZXl9OiBgO1xuICAgICAgICB9XG5cbiAgICAgICAgbXNnID0gYCR7bXNnfSAke3ZhbHVlfSA8YnI+YDtcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjUwMFwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXJ2ZXJfZXJyb3JcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbXNnID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BhdGNoKGVycm9ySGFuZGxlck5vdGlmeSh7IHRpdGxlOiBpMThuLnQoXCJlcnJvcnMuZXJyb3JcIiksIGh0bWw6IG1zZyB9KSk7XG59O1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLk9SREVSUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyLFxuICAgICAgeyBmaWx0ZXIsIHNvcnQgfVxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCwgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBcIm9yZGVyLmlkXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2ZpcnN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfbGFzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2VtYWlsXCIsXG4gICAgICBcIm93bmVyLmlkXCIsXG4gICAgICBcIm93bmVyLmVtYWlsXCIsXG4gICAgICBcIm93bmVyLmZpcnN0X25hbWVcIixcbiAgICAgIFwib3duZXIubGFzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLnN0YXR1c1wiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCIsIGBvcmRlcl9vd25lcl9pZDw+JHt1c2VyUHJvZmlsZS5pZH1gXSxcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7XG4gICAgb3JkZXJJZCxcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMudGF4LG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCksXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBpZFRva2VuID0gZ2V0SWRUb2tlbigpO1xuICAgIGxldCBjb21wYW55ID0gXCJcIjtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmVyaWZpZXIgPSBuZXcgSWRUb2tlblZlcmlmaWVyKCk7XG4gICAgICAgIGNvbnN0IGp3dCA9IHZlcmlmaWVyLmRlY29kZShpZFRva2VuKTtcbiAgICAgICAgY29tcGFueSA9IGp3dC5wYXlsb2FkLmNvbXBhbnk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSBub3JtYWxpemVUaWNrZXQoYW5zd2Vycyk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBub3JtYWxpemVkRW50aXR5LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gocmVmcmVzaFByb2ZpbGUoYW5zd2VycywgY29tcGFueSwgdGlja2V0Lm93bmVyKSk7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGFzc2lnbkF0dGVuZGVlID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBhdHRlbmRlZV9lbWFpbCwgbWVzc2FnZSA9IG51bGwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7IGF0dGVuZGVlX2VtYWlsIH07XG4gICAgaWYgKG1lc3NhZ2UpIHBheWxvYWQubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEFTU0lHTl9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWFzc2lnblRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIG93bmVyLmV4dHJhX3F1ZXN0aW9ucywgb3JkZXIuc3VtbWl0XCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFTU9WRV9USUNLRVRfQVRURU5ERUUpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKVxuICAgICk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lOiBmaXJzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWU6IGxhc3ROYW1lLFxuICAgICAgYXR0ZW5kZWVfZW1haWw6IGVtYWlsXG4gICAgfTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oREVMRUdBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2RlbGVnYXRlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZUV4dHJhUXVlc3Rpb25zID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0UERGID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG9iamVjdFRvUXVlcnlTdHJpbmcocGFyYW1zKTtcbiAgICBjb25zdCBhcGlVcmwgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcGRmPyR7cXVlcnlTdHJpbmd9YDtcblxuICAgIHJldHVybiBmZXRjaChhcGlVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJCbG9iXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vcGRmXCIgfVxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigocGRmKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHBkZik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IFwidGlja2V0LnBkZlwiO1xuICAgICAgICBsaW5rLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyKTtcbiAgfTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCB7IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSwgcGFyc2VBbnN3ZXJzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IEFzc2lnbkVRRm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKHRpY2tldC5vd25lciwgZXh0cmFRdWVzdGlvbnMsIHt9LCBmYWxzZSwgdHJ1ZSksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBmYWxzZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwicmVhc3NpZ25EcmF3ZXJcIik7XG5cbiAgaWYgKGV4dHJhUXVlc3Rpb25zPy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8Qm94PlxuICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHMgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfSBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRVFGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25FUUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IGRlZmF1bHRDb250ZXh0VmFsdWUgPSB7XG4gIHNldE1lc3NhZ2U6ICgpID0+IHt9LFxuICBzZXRNZXNzYWdlQ2FsbGJhY2s6ICgpID0+IHt9XG59O1xuXG5jb25zdCBDdXN0b21EaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dFZhbHVlKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHQsXG4gIERpYWxvZ1RpdGxlXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IEN1c3RvbURpYWxvZyA9ICh7IG9wZW4sIG9uQ2xvc2UsIHRpdGxlLCBib2R5IH0pID0+IChcbiAgPERpYWxvZ1xuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICA+XG4gICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQ29udGVudFRleHRcbiAgICAgICAgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGJvZHkgfX1cbiAgICAgIC8+XG4gICAgPC9EaWFsb2dDb250ZW50PlxuICA8L0RpYWxvZz5cbik7XG5cbkN1c3RvbURpYWxvZy5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGJvZHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCJcbiAgICB9XG4gIH0sXG4gIHR5cG9ncmFwaHk6IHtcbiAgICBib2R5MToge1xuICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBtYXJnaW49XCJub3JtYWxcIiBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQsIGNoaWxkcmVuKSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIGlmICghcnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZS50b1N0cmluZygpXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT5cbiAgICBjaGVja1Zpc2liaWxpdHkoXG4gICAgICBydWxlLFxuICAgICAgY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKVxuICAgICk7XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBBc3NpZ25lZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiTWVcIiwgbGFiZWw6IFwiTWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiU29tZW9uZUVsc2VcIiwgbGFiZWw6IFwiU29tZW9uZSBFbHNlXCIgfSxcbiAgICB7IHZhbHVlOiBcIk5vYm9keVwiLCBsYWJlbDogXCJOb2JvZHlcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQXNzaWduZWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduZWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbmVkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyBiYWRnZV9mZWF0dXJlc190eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQmFkZ2UgRmVhdHVyZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YmFkZ2VfZmVhdHVyZXNfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5CYWRnZUZlYXR1cmVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhZGdlRmVhdHVyZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIEJ1dHRvbixcbiAgQ2FyZCxcbiAgQ2FyZEhlYWRlcixcbiAgRGl2aWRlcixcbiAgUGFwZXJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVGaWx0ZXIgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlRmlsdGVyXCI7XG5pbXBvcnQge1xuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGlja2V0VHlwZUZpbHRlciBmcm9tIFwiLi9UaWNrZXRUeXBlRmlsdGVyXCI7XG5pbXBvcnQgQXNzaWduZWRGaWx0ZXIgZnJvbSBcIi4vQXNzaWduZWRGaWx0ZXJcIjtcbmltcG9ydCBTdGF0dXNGaWx0ZXIgZnJvbSBcIi4vU3RhdHVzRmlsdGVyXCI7XG5pbXBvcnQgRnJlZVBhaWRGaWx0ZXIgZnJvbSBcIi4vRnJlZVBhaWRGaWx0ZXJcIjtcbmltcG9ydCBQcm9tb0NvZGVGaWx0ZXIgZnJvbSBcIi4vUHJvbW9Db2RlRmlsdGVyXCI7XG5cbmNvbnN0IEZpbHRlciA9ICh7IG9uRmlsdGVyLCBvblJlc2V0LCBmaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA9IDE7XG4gIGNvbnN0IEFERF9GSUxURVJfTlVNQkVSID0gMTtcblxuICBjb25zdCBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFssIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvdW50ICs9IHZhbHVlLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gMCkge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY291bnQ7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhmaWx0ZXIpKTtcbiAgfSwgW2ZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RmlsdGVyTnVtQWN0aXZlKDApO1xuICAgIG9uUmVzZXQoKTtcbiAgICB0b2dnbGUoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxCYWRnZVxuICAgICAgICAgIGJhZGdlQ29udGVudD17ZmlsdGVyTnVtQWN0aXZlfVxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc3g9e3sgbXI6IGZpbHRlck51bUFjdGl2ZSA+IDAgPyBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA6IFwiXCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0ZpbHRlckxpc3QgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8UGFwZXIgZWxldmF0aW9uPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDaGVja2JveENvbnRhaW5lcn0+XG4gICAgICAgICAgPENhcmQgdmFyaWFudD1cIm91dGxpbmVkXCI+XG4gICAgICAgICAgICA8Q2FyZEhlYWRlclxuICAgICAgICAgICAgICB0aXRsZT1cIkZpbHRlcnNcIlxuICAgICAgICAgICAgICBhY3Rpb249e1xuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbHRlclJlc2V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xlYW5CdXR0b259XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2xlYW5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxEaXZpZGVyIC8+XG4gICAgICAgICAgICA8QmFkZ2VGZWF0dXJlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxBc3NpZ25lZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxTdGF0dXNGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VGlja2V0VHlwZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFByb21vQ29kZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1BST01PQ09ERV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxGcmVlUGFpZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0ZSRUVfUEFJRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXJcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKEZpbHRlcik7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgRnJlZVBhaWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkZyZWVcIiwgbGFiZWw6IFwiRnJlZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJQYWlkXCIsIGxhYmVsOiBcIlBhaWRcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiRnJlZSAvIFBhaWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRnJlZVBhaWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZyZWVQYWlkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFRleHRGaWVsZFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgUHJvbW9Db2RlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG4gIGNvbnN0IFtwcm9tb0NvZGUsIHNldFByb21vQ29kZV0gPSB1c2VTdGF0ZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG5cbiAgY29uc3QgZGVib3VuY2VUaW1lciA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgREVCT1VOQ0VfVkFMVUUgPSA1MDA7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQcm9tb0NvZGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2KSA9PiB7XG4gICAgY29uc3QgbmV3UHJvbW9Db2RlID0gZXYudGFyZ2V0LnZhbHVlO1xuICAgIC8vIHVwZGF0ZSBsb2NhbCBzdGF0ZSBzbyB0aGUgaW5wdXQgcmVmbGVjdHMgY2hhbmdlc1xuICAgIHNldFByb21vQ29kZShuZXdQcm9tb0NvZGUpO1xuXG4gICAgLy8gcmVtb3ZlIGN1cnJlbnQgZGVib3VuY2VcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBkZWJvdW5jZSBzZXQgdG8gNTAwIG1zXG4gICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvbkZpbHRlcih7XG4gICAgICAgIFtGSUxURVJfVkFSX1BST01PQ09ERV06IG5ld1Byb21vQ29kZVxuICAgICAgfSk7XG4gICAgfSwgREVCT1VOQ0VfVkFMVUUpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gcmVtb3ZlIGRlYm91bmNlIG9uIHJlbG9hZFxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiUHJvbW8gQ29kZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcHk6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJvbW8gY29kZVwiXG4gICAgICAgICAgICB2YWx1ZT17cHJvbW9Db2RlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUHJvbW9Db2RlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9tb0NvZGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5wdXRCYXNlIGZyb20gXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIG1hcmdpblJpZ2h0OiBcIjBcIixcbiAgbWFyZ2luTGVmdDogXCIwXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbiAgZGlzcGxheTogXCJibG9ja1wiXG59KSk7XG5jb25zdCBTZWFyY2hJY29uV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCJcbn0pKTtcbmNvbnN0IFN0eWxlZElucHV0QmFzZSA9IHN0eWxlZChJbnB1dEJhc2UpKCgpID0+ICh7XG4gIGNvbG9yOiBcImluaGVyaXRcIixcbiAgYm9yZGVyQm90dG9tOiBcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpXCIsXG4gIHBhZGRpbmdMZWZ0OiBcIjI1cHhcIixcbiAgcGFkZGluZ1JpZ2h0OiBcIjI1cHhcIixcbiAgZm9udFNpemU6IFwiMWVtXCJcbn0pKTtcbmNvbnN0IENsb3NlSWNvbldyYXBwZXIgPSBzdHlsZWQoQ2xvc2VJY29uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiBcIjJweFwiLFxuICBmb250U2l6ZTogXCIxLjVlbVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IFwiMFwiLFxuICByaWdodDogXCIwXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgekluZGV4OiBcIjEwMDBcIlxufSkpO1xuXG5jb25zdCBTZWFyY2ggPSAoeyBvblNlYXJjaCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dDbG9zZSwgc2V0U2hvd0Nsb3NlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAga2V5LFxuICAgICAgbmF0aXZlRXZlbnQ6IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBvblNlYXJjaCh7XG4gICAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IHZhbHVlXG4gICAgICB9KTtcbiAgICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIG9uU2VhcmNoKHtcbiAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCJcbiAgICB9KTtcbiAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgc2V0U2hvd0Nsb3NlKGZhbHNlKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZSAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBQYXBlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU29ydCA9ICh7IG9uU29ydCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8UGFwZXJcbiAgICAgICAgICBlbGV2YXRpb249ezh9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfVxuICAgICAgICA+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiZGVzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImFzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU3RhdHVzRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJJbmNvbXBsZXRlXCIsIGxhYmVsOiBcIkluY29tcGxldGVcIiB9LFxuICAgIHsgdmFsdWU6IFwiQ29tcGxldGVcIiwgbGFiZWw6IFwiQ29tcGxldGVcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiU3RhdHVzXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblN0YXR1c0ZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdHVzRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBUaWNrZXRUeXBlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IHRpY2tldF90eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJUaWNrZXQgVHlwZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dGlja2V0X3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0VHlwZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0VHlwZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZpbHRlcnMgPSAoeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSA9PiAoXG4gIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgPEdyaWRcbiAgICAgIGl0ZW1cbiAgICAgIHhzPXs2fVxuICAgICAgY29udGFpbmVyXG4gICAgICBwYWRkaW5nPXsxfVxuICAgICAgZ2FwPXsyfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgID5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gLz5cbiAgICA8L0dyaWQ+XG4gIDwvR3JpZD5cbik7XG5cbkZpbHRlcnMucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIsIGdldFVzZXJPcmRlcnMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCwgRklSU1RfUEFHRSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGhhc01vcmUyRmV0Y2gsIHNob3VsZEZldGNoRGF0YSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE15T3JkZXJzVGlja2V0cyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgbWVtYmVyT3JkZXJzLFxuICAgIG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgb3JkZXJzX2xhc3RfcGFnZSxcbiAgICBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlLFxuICAgIGZpbHRlcixcbiAgICBzb3J0XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jIChwYWdlKSA9PiB7XG4gICAgaWYgKHNob3VsZEZldGNoRGF0YShwYWdlLCBvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlKSlcbiAgICAgIGRpc3BhdGNoKFxuICAgICAgICBnZXRVc2VyT3JkZXJzKHtcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgc29ydFxuICAgICAgICB9KVxuICAgICAgKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgICAgZGF0YS5mb3JFYWNoKChvcmRlcikgPT4ge1xuICAgICAgICAgIGRpc3BhdGNoKFxuICAgICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgICAgICAgY3VycmVudF9wYWdlOiBGSVJTVF9QQUdFLFxuICAgICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgc29ydFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKEZJUlNUX1BBR0UpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGlkPVwiaW5maW5pdGVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMubXlPcmRlcnNXcmFwcGVyfT5cbiAgICAgIHtcIiBcIn1cbiAgICAgIHttZW1iZXJPcmRlcnM/Lmxlbmd0aCA/IChcbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlMkZldGNoKG9yZGVyc19jdXJyZW50X3BhZ2UsIG9yZGVyc19sYXN0X3BhZ2UpfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgPlxuICAgICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICAgIGtleT17b3JkZXIubnVtYmVyICsgb3JkZXIuaWR9XG4gICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ZvdW5kfT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzSWNvbldyYXBwZXJ9PlxuICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOEZcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7dChcIm9yZGVycy5ub19vcmRlcnNcIil9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2ssXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0KTtcbiAgY29uc3QgaGFzUmVmdW5kUmVxdWVzdHMgPSB0aWNrZXRzPy5zb21lKCh0KSA9PiB0LnJlZnVuZF9yZXF1ZXN0cy5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259IFxuICAgICAgICAgICR7c3VibWl0UmVxdWVzdCA/IHN0eWxlcy5yZWZ1bmREaXNhYmxlZCA6IFwiXCJ9YH1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBkaXNhYmxlZD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAge2hhc1JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGUgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgICAgb25FbWFpbFN1cHBvcnRDbGljaz17KCkgPT4ge319XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn07XG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IHsgZ2V0VXNlclRpY2tldHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHtcbiAgT05FX1BBR0VfTkVYVCxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRklSU1RfUEFHRVxufSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBoYXNNb3JlMkZldGNoLCBzaG91bGRGZXRjaERhdGEgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuY29uc3QgQXNzaWduVG9NZSA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsXG4gICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jIChwYWdlKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc2hvdWxkRmV0Y2hEYXRhKHBhZ2UsIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsIHVzZXJfdGlja2V0c19sYXN0X3BhZ2UpXG4gICAgKVxuICAgICAgZGlzcGF0Y2goXG4gICAgICAgIGdldFVzZXJUaWNrZXRzKHsgcGFnZSwgcGVyUGFnZTogREVGQVVMVF9JVEVNU19QRVJfUEFHRSwgZmlsdGVyLCBzb3J0IH0pXG4gICAgICApO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKEZJUlNUX1BBR0UpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfT5cbiAgICAgIDxkaXYgaWQ9XCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRUb01lV3JhcHBlcn0+XG4gICAgICAgIHt1c2VyVGlja2V0cz8ubGVuZ3RoID8gKFxuICAgICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgICAgZGF0YUxlbmd0aD17dXNlclRpY2tldHM/Lmxlbmd0aH1cbiAgICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YSh1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlMkZldGNoKFxuICAgICAgICAgICAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgICAgICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIHt1c2VyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17W119XG4gICAgICAgICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub1RpY2tldHNGb3VuZH0+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzSWNvbldyYXBwZXJ9PlxuICAgICAgICAgICAgICA8U2VhcmNoSWNvbiBzeD17eyBmb250U2l6ZTogNDQsIGNvbG9yOiBcIiMwMDAwMDA4RlwiIH19IC8+XG4gICAgICAgICAgICAgIDxDbG9zZUljb25cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDE4LFxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzAwMDAwMDhGXCJcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICB7dChcInRpY2tldHMubm9fdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduVG9NZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgR3JpZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbmVkVG8gPSAoeyBlbWFpbCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtYXNzaWduZWRcIj5cbiAgICAgICAge2VtYWlsfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgRXh0ZXJuYWxBc3NpZ25lZFRvID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfYnlcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IE1hbmFnZUZvciA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLm1hbmFnZV9mb3JcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEF0dGVuZGVlU3RhdHVzID0gKHsgdGlja2V0LCBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9ICF0aWNrZXQub3duZXI/LmVtYWlsICYmIHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IGlzRGVsZWdhdGVkID0gISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH1cblxuICBpZiAodGlja2V0Lm93bmVyPy5lbWFpbCkge1xuICAgIHJldHVybiAoXG4gICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEFzc2lnbmVkVG8gZW1haWw9e3RpY2tldC5vd25lci5lbWFpbH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7aXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0ICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxFeHRlcm5hbEFzc2lnbmVkVG9cbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2ZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2xhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPE1hbmFnZUZvclxuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vd25lcj8uZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vd25lcj8ubGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlckxpc3RJdGVtID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgb25QYWdpbmF0ZUNsaWNrLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gb3JkZXI/LnRpY2tldHNfdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBsZXNzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TGVzc31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlckxpc3RJdGVtLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0SXRlbTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgeyByZXNldFRpY2tldCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IG1vZGFsVmlld3MgPSB7XG4gIGRldGFpbDogXCJERVRBSUxcIixcbiAgcmVhc3NpZ246IFwiUkVBU1NJR05cIixcbiAgYXNzaWduOiBcIkFTU0lHTlwiXG59O1xuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgaXNJbmNvbXBsZXRlLFxuICBpc1VuYXNzaWduZWQsXG4gIGlzUmVhc3NpZ25hYmxlLFxuICBvbk9wZW5DbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5hc3NpZ24pfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdGFja1xuICAgICAgc3g9e3tcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZW5kXCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgfX1cbiAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICA+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuZGV0YWlsKX1cbiAgICAgID5cbiAgICAgICAge2lzSW5jb21wbGV0ZVxuICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuZmluaXNoX3RpY2tldFwiKVxuICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVhc3NpZ24gdGlja2V0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5yZWFzc2lnbil9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMucmVhc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cblRpY2tldENUQXMucHJvcFR5cGVzID0ge1xuICBpc0luY29tcGxldGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzVW5hc3NpZ25lZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNSZWFzc2lnbmFibGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uT3BlbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIGlzUmVmdW5kTW9kYWwsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSwgY2FuUmVhc3NpZ24gfSA9XG4gICAgdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbbW9kYWxPcGVuLCBzZXRNb2RhbE9wZW5dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBvblJlYXNzaWduYWJsZVBlcmlvZCA9IHJlYXNzaWduRGF0ZSA+IG5vdztcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPVxuICAgIG9uUmVhc3NpZ25hYmxlUGVyaW9kICYmIGNhblJlYXNzaWduICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4obnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKHZpZXcpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4odmlldyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyV3JhcHBlcn0gJHtcbiAgICAgICAgaXNSZWZ1bmRNb2RhbCA/IHN0eWxlcy5yZWZ1bmRNb2RhbCA6IFwiXCJcbiAgICAgIH0gJHtpc1JlZnVuZE1vZGFsICYmICFpc1JlZnVuZGFibGUgPyBzdHlsZXMuZGlzYWJsZWRSZWZ1bmQgOiBcIlwifSAke1xuICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQgPyBzdHlsZXMuc2VsZWN0ZWQgOiBcIlwiXG4gICAgICB9YH1cbiAgICA+XG4gICAgICB7aXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0geHM9ezF9IHBhZGRpbmc9ezJ9IGNsYXNzTmFtZT17c3R5bGVzLmNoZWNrYm94fT5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE4XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXNhYmxlZD17IWlzUmVmdW5kYWJsZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB4cz17aXNSZWZ1bmRNb2RhbCA/IDExIDogMTJ9XG4gICAgICA+XG4gICAgICAgIDxHcmlkXG4gICAgICAgICAgeHM9ezh9XG4gICAgICAgICAgcHk9ezJ9XG4gICAgICAgICAgcGw9ezR9XG4gICAgICAgICAgaXRlbVxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFRpY2tldFR5cGV9XG4gICAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVXcmFwcGVyfSB4cz17NH0gcHk9ezJ9IHByPXs0fSBpdGVtPlxuICAgICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgIHNyYz17YmYuaW1hZ2V9XG4gICAgICAgICAgICAgIGFsdD17YmYubmFtZX1cbiAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiA0LCBwYjogMiB9fSBpdGVtPlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1c1xuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ9eyEhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgIHRleHQ9e3RpY2tldC5udW1iZXJ9XG4gICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwidGlja2V0X3N0YXR1cy5jb3B5X3RpY2tldF9udW1iZXJcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICAgIHhzPXsxMn1cbiAgICAgICAgICAgIGxnPXs2fVxuICAgICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgcHk9ezJ9IHByPXs0fSB4cz17MTJ9IGxnPXs2fSBjb250YWluZXIgaXRlbT5cbiAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgIGFsaWduPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgICAgICAgICAgbWluSGVpZ2h0OiBcIjJlbVwiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEFjdGlvbkJ1dHRvbnN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmICFpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgICAgICAgICA8VGlja2V0Q1RBc1xuICAgICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICAgIGlzUmVhc3NpZ25hYmxlPXtpc1JlYXNzaWduYWJsZSAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuZGV0YWlsfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICAgIDxUaWNrZXRBc3NpZ25cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e1ttb2RhbFZpZXdzLnJlYXNzaWduLCBtb2RhbFZpZXdzLmFzc2lnbl0uaW5jbHVkZXMobW9kYWxPcGVuKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3JkZXJfaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRvdGFsX3JlZnVuZGVkX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0aWNrZXRfdHlwZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGlzUmVmdW5kTW9kYWw6IFByb3BUeXBlcy5ib29sLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWxlY3RUb1JlZnVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFJlZnVuZERldGFpbHMgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHNcIjtcblxuY29uc3QgVGFiUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlID0gKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZ1bmREZXRhaWxzT3Blbiwgc2V0UmVmdW5kRGV0YWlsc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICAgICAodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkXG4gICAgICApO1xuICAgICAgc2V0VGlja2V0c1RvUmVmdW5kKFsuLi50aWNrZXRzVG9SZWZ1bmQsIHNlbGVjdGVkVGlja2V0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cyh0aWNrZXQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbG9zZVN1Ym1pdFJlcXVlc3QgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFsbFJlZnVuZFN0YXR1c2VzID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSwgZmlsdGVyLCBzb3J0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogXCI1cHggMTBweFwiIH19XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiA0LFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IHsgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmREZXRhaWxzID0gKHsgdGlja2V0cywgY3VycmVuY3ksIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHJlcXVlc3RlZFRpY2tldHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHModGlja2V0cyksXG4gICAgW3RpY2tldHNdXG4gICk7XG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVmdW5kLWRldGFpbHNcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgID5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgcGFkZGluZzogXCIwIDVyZW1cIlxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVxdWVzdGVkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBjdXJyZW5jeT17Y3VycmVuY3l9XG4gICAgICAgICAgICByZWZ1bmREZXRhaWxzXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuUmVmdW5kRGV0YWlscy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRGV0YWlscztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEljb25CdXR0b24sIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdG9vbHRpcENsYXNzZXMgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBJbmZvSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgUmVmdW5kU3RhdHVzIGZyb20gXCIuL1JlZnVuZFN0YXR1c1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCA9ICh7IHRpY2tldCwgY3VycmVuY3ksIHJlZnVuZERldGFpbHMgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgR1JJRF84ID0gODtcbiAgY29uc3QgR1JJRF8xMiA9IDEyO1xuXG4gIGNvbnN0IFBBRERJTkdfMiA9IDI7XG5cbiAgY29uc3QgYXBwcm92ZWRSZWZ1bmRzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cy5maWx0ZXIoXG4gICAgKHJlZnVuZCkgPT4gcmVmdW5kLnN0YXR1cyA9PT0gXCJBcHByb3ZlZFwiXG4gICk7XG5cbiAgY29uc3QgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeSA9IHt9O1xuXG4gIGFwcHJvdmVkUmVmdW5kcy5mb3JFYWNoKChyZWZ1bmQpID0+IHtcbiAgICByZWZ1bmQucmVmdW5kZWRfdGF4ZXMuZm9yRWFjaCgocnQpID0+IHtcbiAgICAgIGNvbnN0IHRheElkID0gcnQudGF4LmlkO1xuICAgICAgaWYgKCFyZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSkge1xuICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSA9IHtcbiAgICAgICAgICBuYW1lOiBydC50YXgubmFtZSxcbiAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50OiAwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXS50b3RhbFJlZnVuZGVkVGF4QW1vdW50ICs9XG4gICAgICAgIHJ0LnJlZnVuZGVkX2Ftb3VudDtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgSHRtbFRvb2x0aXAgPSBzdHlsZWQoKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9KSA9PiAoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgPFRvb2x0aXAgey4uLnByb3BzfSBjbGFzc2VzPXt7IHBvcHBlcjogY2xhc3NOYW1lIH19IC8+XG4gICkpKCgpID0+ICh7XG4gICAgW2AmIC4ke3Rvb2x0aXBDbGFzc2VzLnRvb2x0aXB9YF06IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZjVmNWY5XCIsXG4gICAgICBjb2xvcjogXCJyZ2JhKDAsIDAsIDAsIDAuODcpXCIsXG4gICAgICBtYXhXaWR0aDogMjIwLFxuICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICNkYWRkZTlcIlxuICAgIH1cbiAgfSkpO1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMucmVmdW5kVGlja2V0Qm94Q29udGFpbmVyfSAke1xuICAgICAgICByZWZ1bmREZXRhaWxzID8gc3R5bGVzLnJlZnVuZERldGFpbCA6IFwiXCJcbiAgICAgIH0gYH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3RlZC10aWNrZXQtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17cmVmdW5kRGV0YWlscyA/IEdSSURfOCA6IEdSSURfMTJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgICBwdD17Mn1cbiAgICAgICAgcHg9ezR9XG4gICAgICA+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8R3JpZCBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVXcmFwcGVyfSB4cz17NH0gaXRlbT5cbiAgICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZX1cbiAgICAgICAgICAgICAgICBzcmM9e2JmLmltYWdlfVxuICAgICAgICAgICAgICAgIGFsdD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBrZXk9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7cmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXs0fSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICAgIDxSZWZ1bmRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0gcHg9ezR9IHBiPXtyZWZ1bmREZXRhaWxzID8gUEFERElOR18yIDogMH0gY29udGFpbmVyPlxuICAgICAgICA8R3JpZCB4cz17OH0gY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0QXR0ZW5kZWV9PlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTogPENvcHlUZXh0IHRleHQ9e3RpY2tldC5udW1iZXJ9IC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtyZWZ1bmREZXRhaWxzICYmIHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgICA8R3JpZCB4cz17NH0gcGw9ezR9PlxuICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgUmVmdW5kZWRcbiAgICAgICAgICAgIHthcHByb3ZlZFJlZnVuZHMuc29tZSgocikgPT4gci5yZWZ1bmRlZF90YXhlcy5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgIDxIdG1sVG9vbHRpcFxuICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQucmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICBUaWNrZXQgQW1vdW50XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGI+VGF4ZXM8L2I+XG4gICAgICAgICAgICAgICAgICAgIHtPYmplY3Qua2V5cyhyZWZ1bmRlZFRheGVzU3VtbWF0b3J5KS5tYXAoKHRheElkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LCBuYW1lIH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF07XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGtleT17dGF4SWR9PntgJHtuYW1lfSAtICR7Zm9ybWF0Q3VycmVuY3koXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgY3VycmVuY3kgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKX1gfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEluZm9JY29uIC8+XG4gICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8L0h0bWxUb29sdGlwPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAge21vbWVudChcbiAgICAgICAgICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0c1swXS5hY3Rpb25fZGF0ZSAqIE1JTExJU0VDX1RPX1NFQ1xuICAgICAgICAgICAgKS5mb3JtYXQoXCJNTU0gREQsIFlZWVlcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICAgeyFyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezEyfSBwcj17NH0gcGI9ezJ9PlxuICAgICAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbT5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmdW5kRGV0YWlsczogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RlZFRpY2tldDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDaGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kU3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBzdGF0dXNDb2xvciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IodGlja2V0KSxcbiAgICBbdGlja2V0XVxuICApO1xuICByZXR1cm4gKFxuICAgIDxDaGlwXG4gICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHJlZnVuZCBzdGF0dXMgbGFiZWxcIlxuICAgICAgbGFiZWw9e3QoYHRpY2tldF9zdGF0dXMucmVmdW5kX3JlcXVlc3RfJHtzdGF0dXNDb2xvcn1gKX1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzW3N0YXR1c0NvbG9yXX1gfVxuICAgIC8+XG4gICk7XG59O1xuXG5SZWZ1bmRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RIUkVFLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RzTW9kYWwgPSAoe1xuICB0aWNrZXRzLFxuICBzdW1taXQsXG4gIG9wZW4sXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICB1bnNlbGVjdFJlZnVuZFRpY2tldHNcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IHVzZVN0YXRlKFNURVBfT05FKTtcbiAgY29uc3QgW2Vycm9yTXNnLCBzZXRFcnJvck1zZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW3JlZnVuZFN1Y2Nlc3MsIHNldFJlZnVuZFN1Y2Nlc3NdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgICBpZiAocmVmdW5kU3VjY2Vzcykge1xuICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UoKTsgLy8gaWYgdGhlIHJlZnVuZCBpcyBhIHN1Y2Nlc3MsIHRyaWdnZXIgYW5kIHJlLXJldHJpZXZlIHRpY2tldHMgYnkgb3JkZXJcbiAgICAgIHNldFJlZnVuZFN1Y2Nlc3MoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjb25maXJtUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9UV08pO1xuICB9O1xuXG4gIGNvbnN0IGdvQmFja1RvUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzOiB0aWNrZXRzVG9SZWZ1bmQgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHNUb1JlZnVuZC5sZW5ndGgpIHtcbiAgICAgICAgc2V0U3RlcChTVEVQX1RIUkVFKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfc2VsZWN0X3JlZnVuZFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICBrZXk9e2B0aWNrZXQtJHt0aWNrZXQuaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1xuICAgICAgICAgICAgICAhIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgICAgIGlzUmVmdW5kTW9kYWxcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y29uZmlybVJlZnVuZH1cbiAgICAgICAgICBkaXNhYmxlZD17dGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3ggZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCI+XG4gICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jb25maXJtX3JlZnVuZFwiKX1cbiAgICAgIDwvaDM+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzVG9SZWZ1bmQubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuQ1RBQnV0dG9uV3JhcHBlcn0+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLXJldHVybi1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtnb0JhY2tUb1JlZnVuZH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5iYWNrXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtyZWZ1bmRUaWNrZXRzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUaHJlZSA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgY2FzZSBTVEVQX1RIUkVFOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFRocmVlKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWZ1bmQtcmVxdWVzdHNcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LW1vZGFsXCJcbiAgICAgID5cbiAgICAgICAge3JlbmRlclN0ZXBzKCl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0c01vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEljb25CdXR0b24sIFR5cG9ncmFwaHksIERyYXdlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBDbG9zZSBhcyBDbG9zZUljb24gfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSaWdodERyYXdlciA9ICh7IGlkLCB0aXRsZSwgY2hpbGRyZW4sIG9wZW4sIG9uQ2xvc2UsIGNsYXNzTmFtZSB9KSA9PiAoXG4gIDxEcmF3ZXJcbiAgICBpZD17aWR9XG4gICAgb3Blbj17b3Blbn1cbiAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLndyYXBwZXJ9ICR7Y2xhc3NOYW1lfWB9XG4gID5cbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8SWNvbkJ1dHRvblxuICAgICAgICBkYXRhLXRlc3RpZD1cImNsb3NlLWRyYXdlclwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICAge2NoaWxkcmVufVxuICA8L0RyYXdlcj5cbik7XG5cblJpZ2h0RHJhd2VyLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGl0bGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5ub2RlXSksXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJpZ2h0RHJhd2VyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTdW1taXRIZWFkZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICByZXR1cm4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICBkYXRhLXRlc3RpZD1cIm15LW9yZGVycy10aWNrZXQtaGVhZGVyXCJcbiAgICA+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT5cbiAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgIDwvaDI+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTdW1taXRIZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgRGVsZWdhdGVGb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9maXJzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmZpcnN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZmlyc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2xhc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5sYXN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfbGFzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmVtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbkRlbGVnYXRlRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi8uLi8uLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdSA/IFwieW91XCIgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlja2V0LnRpY2tldF90eXBlLm5hbWU7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgaWYgKGFzc2lnbmVkVG9Zb3UpIHtcbiAgICAgICAgcmV0dXJuIHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX3lvdXJfZXFcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeVdyYXBwZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMucHVyY2hhc2VkQnl9PlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnB1cmNoYXNlZF9ieVwiKX17XCIgXCJ9XG4gICAgICAgICAge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck5vfT5cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICB3aWR0aD17MjUwfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuQXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkhlYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlYXNzaWduSGVhZGVyID0gKHsgaW5Qcm9ncmVzcywgYWxsb3dzRGVsZWdhdGUsIHRpY2tldCwgdXNlckVtYWlsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdSA/IFwieW91XCIgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcblxuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5yZWFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGFsbG93c0RlbGVnYXRlXG4gICAgICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25cIilcbiAgICAgICAgOiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvbl9ub19kZWxlZ2F0ZVwiKTtcbiAgICB9XG4gICAgaWYgKGFzc2lnbmVkVG9Zb3UpIHtcbiAgICAgIHJldHVybiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX3lvdXJfZXFcIik7XG4gICAgfVxuICAgIHJldHVybiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX290aGVyc19lcVwiKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5SZWFzc2lnbkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGluUHJvZ3Jlc3M6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHVzZXJFbWFpbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBSZWFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLnRleHQuc3RyaW5nXCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLm5ld19hdHRlbmRlZV9lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwicGVyc29uYWxfbWVzc2FnZVwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWFzc2lnbkZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25Gb3JtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBDb2xsYXBzZSwgRGl2aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBhc3NpZ25BdHRlbmRlZSxcbiAgZGVsZWdhdGVUaWNrZXQsXG4gIHJlYXNzaWduVGlja2V0LFxuICBzYXZlRXh0cmFRdWVzdGlvbnNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9SZWFzc2lnbkZvcm1cIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBBc3NpZ25FUUZvcm0gZnJvbSBcIi4uL0Fzc2lnbkVRRm9ybVwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgRGVsZWdhdGVGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvRGVsZWdhdGVGb3JtXCI7XG5pbXBvcnQgQXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL0Fzc2lnbkhlYWRlclwiO1xuaW1wb3J0IFJlYXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuY29uc3QgVGlja2V0QXNzaWduID0gKHsgdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIG9wZW4sIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2Fzc2lnbk9wdGlvbiwgc2V0QXNzaWduT3B0aW9uXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduYXRpb25JblByb2dyZXNzLCBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3NdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNBc3NpZ25lZFRvTWUgPSB1c2VyUHJvZmlsZT8uZW1haWwgPT09IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICBjb25zdCB7IGFsbG93c0RlbGVnYXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3Qgb25Bc3NpZ24gPSAoZW1haWwsIG1lc3NhZ2UgPSBcIlwiKSA9PiB7XG4gICAgaWYgKG93bmVySWQpIHtcbiAgICAgIGRpc3BhdGNoKHJlYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkRlbGVnYXRlID0gKGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBkZWxlZ2F0ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgc2V0VGltZW91dChvbkNsb3NlLCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZUVRID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlRXh0cmFRdWVzdGlvbnModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdGl0bGUgPSBvd25lcklkXG4gICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24udGl0bGVcIilcbiAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24udGl0bGVcIik7XG4gIGNvbnN0IEhlYWRlciA9IG93bmVySWQgPyBSZWFzc2lnbkhlYWRlciA6IEFzc2lnbkhlYWRlcjtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWFzc2lnbkRyYXdlclwiXG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn0+XG4gICAgICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgICAgIGluUHJvZ3Jlc3M9e2Fzc2lnbmF0aW9uSW5Qcm9ncmVzc31cbiAgICAgICAgICAgICAgYWxsb3dzRGVsZWdhdGU9e2FsbG93c0RlbGVnYXRlfVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgdXNlckVtYWlsPXt1c2VyUHJvZmlsZS5lbWFpbH1cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIHthc3NpZ25hdGlvbkluUHJvZ3Jlc3MgPyAoXG4gICAgICAgICAgICAgIDxBc3NpZ25FUUZvcm1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbk9wdGlvbnNXcmFwcGVyfT5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzQXNzaWduZWRUb01lfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Bc3NpZ24odXNlclByb2ZpbGUuZW1haWwsIFwiXCIpfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fbWVcIil9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgICAgICAgICAgIG9yXG4gICAgICAgICAgICAgICAgPC9EaXZpZGVyPlxuICAgICAgICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJvdGhlclwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgICAgICAgICAgICA8UmVhc3NpZ25Gb3JtXG4gICAgICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkFzc2lnbih2YWwubmV3X2F0dGVuZGVlX2VtYWlsLCB2YWwucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwib3RoZXJcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwib3RoZXJcIil9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX290aGVyXCIpfVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAge2FsbG93c0RlbGVnYXRlICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICAgICAgPC9EaXZpZGVyPlxuICAgICAgICAgICAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJtYW5hZ2VcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICAgICAgICAgICAgICA8RGVsZWdhdGVGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZWdhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2ZpcnN0X25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2xhc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQ29sbGFwc2U+XG4gICAgICAgICAgICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwibWFuYWdlXCIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJtYW5hZ2VcIil9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLm1hbmFnZV90aWNrZXRcIil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0QXNzaWduLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0QXNzaWduO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgc2V0RmllbGRUb3VjaGVkLCBzZXRGaWVsZFZhbHVlIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHNldE9wdGlvbnModmFsdWUgPyBbdmFsdWVdIDogW10pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyhzdW1taXRJZCwgaW5wdXRWYWx1ZSwgKHJlc3VsdHMpID0+IHtcbiAgICAgIGxldCBuZXdPcHRpb25zID0gW107XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBuZXdPcHRpb25zID0gW3ZhbHVlXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zLCAuLi5yZXN1bHRzXTtcbiAgICAgIH1cblxuICAgICAgc2V0T3B0aW9ucyhuZXdPcHRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbdmFsdWUsIGlucHV0VmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxBdXRvY29tcGxldGVcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgYXV0b0NvbXBsZXRlXG4gICAgICBmcmVlU29sb1xuICAgICAgaW5jbHVkZUlucHV0SW5MaXN0XG4gICAgICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnNcbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RmllbGRUb3VjaGVkKG5hbWUsIHRydWUsIHRydWUpfVxuICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IHtcbiAgICAgICAgLy8gVmFsdWUgc2VsZWN0ZWQgd2l0aCBlbnRlciwgcmlnaHQgZnJvbSB0aGUgaW5wdXRcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBcInh4eFwiIG9wdGlvbiBjcmVhdGVkIGR5bmFtaWNhbGx5XG4gICAgICAgIGlmIChvcHRpb24uaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvcHRpb24uaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIG9wdGlvblxuICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWU7XG4gICAgICB9fVxuICAgICAgb25DaGFuZ2U9eyhldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdG1wVmFsdWUgPSBuZXdWYWx1ZT8uaW5wdXRWYWx1ZSB8fCBuZXdWYWx1ZTtcbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLnRpdGxlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSBcIlwiICYmICFpc0V4aXN0aW5nKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgICAgbmFtZTogYFNlbGVjdCBcIiR7aW5wdXRWYWx1ZX1cImBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH19XG4gICAgICByZW5kZXJJbnB1dD17KHBhcmFtcykgPT4gKFxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucGFyYW1zfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9jb21wYW55XCIpfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyID0gKHtcbiAgZGlzY2xhaW1lcixcbiAgZm9ybWlrLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGlzUmVxdWlyZWQgPSB0cnVlXG59KSA9PiB7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRydWUsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHRydWUsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwiZGV0YWlsc0RyYXdlclwiKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBpc0RlbGVnYXRlZD17ISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWR9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYWRkaXRpb25hbERldGFpbHN9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmFkaXRpb25hbF9kZXRhaWxzXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCwgaXNEZWxlZ2F0ZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9e1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsfVxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZW1haWxcIil9XG4gICAgICAgIGRpc2FibGVkXG4gICAgICAgIHZhbHVlPXt2YWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdfVxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgLz5cbiAgICAgIHtpc0RlbGVnYXRlZCAmJiAoXG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIHN4PXt7IGZvbnRXZWlnaHQ6IDUwMCwgbWFyZ2luOiBcIjEwcHggMFwiIH19PlxuICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5tYW5hZ2VfZm9yXCIpfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICApfVxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZCB8fCBpc0RlbGVnYXRlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICAgIDxDb21wYW55RmllbGQgZm9ybWlrPXtmb3JtaWt9IHN1bW1pdElkPXtzdW1taXRJZH0gaXNSZXF1aXJlZCAvPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pbmZvTm90ZX0+e3QoXCJ0aWNrZXRfZGV0YWlsLmluZm9fbm90ZVwiKX08L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldE93bmVyRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNEZWxlZ2F0ZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBEcmF3ZXIsIEljb25CdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgQ2xvc2UgYXMgQ2xvc2VJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb24sXG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IHtcbiAgZ2V0VGlja2V0UERGLFxuICBzYXZlVGlja2V0RGV0YWlscyxcbiAgcmVzZW5kTm90aWZpY2F0aW9uXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtzZW50Q29uZmlybWF0aW9uLCBzZXRTZW50Q29uZmlybWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERyYXdlclxuICAgICAgICBpZD1cImRldGFpbHNEcmF3ZXJcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIHshc3VtbWl0Py5pc192aXJ0dWFsICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRUaWNrZXRQZGZ9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zZW5kQnRufSAke1xuICAgICAgICAgICAgICAgICAgICAgIHNlbnRDb25maXJtYXRpb24gPyBzdHlsZXMuc2VudCA6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VuZEVtYWlsfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbnRcIilcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0RyYXdlcj5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFzYXZlTWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZVNhdmVNZXNzYWdlfVxuICAgICAgICB0aXRsZT17c2F2ZU1lc3NhZ2U/LnRpdGxlfVxuICAgICAgICBkZXNjcmlwdGlvbj17c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHtyZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyByZWZ1bmQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzSW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBpbmNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc1VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgdW5hc3NpZ25lZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZFJlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRGl2aWRlcixcbiAgVGFicyxcbiAgVGFiLFxuICB1c2VUaGVtZSxcbiAgdXNlTWVkaWFRdWVyeVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgVEFCUyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4uL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnbmVkVG9NZSBmcm9tIFwiLi4vT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICh7IHRpdGxlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuXG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKF8sIG5ld1RhYikgPT4ge1xuICAgIHNldFRhYihuZXdUYWIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50YWJXcmFwcGVyfT5cbiAgICAgIDxUYWJzXG4gICAgICAgIHZhbHVlPXt0YWJ9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUYWJDaGFuZ2V9XG4gICAgICAgIHZhcmlhbnQ9e2lzTW9iaWxlID8gXCJmdWxsV2lkdGhcIiA6IFwic3RhbmRhcmRcIn1cbiAgICAgID5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcIm9yZGVycy50aXRsZVwiKX0gdmFsdWU9e1RBQlMuT1JERVJTfSAvPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpfSB2YWx1ZT17VEFCUy5USUNLRVRTfSAvPlxuICAgICAgPC9UYWJzPlxuICAgICAgPERpdmlkZXIgLz5cbiAgICAgIDxCb3ggc3g9e3sgcHQ6IDYsIHBiOiAzIH19Pnt0aXRsZX08L0JveD5cbiAgICAgIHt0YWIgPT09IFRBQlMuT1JERVJTICYmIDxNeU9yZGVyc1RpY2tldHMgLz59XG4gICAgICB7dGFiID09PSBUQUJTLlRJQ0tFVFMgJiYgPEFzc2lnbmVkVG9NZSAvPn1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFRhYnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsLCBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgcmVzZXRGaWx0ZXIsXG4gIHJlc2V0RXJyb3IsXG4gIGNoYW5nZVNvcnQsXG4gIGNoYW5nZUZpbHRlclxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IEN1c3RvbVRoZW1lIGZyb20gXCIuLi9DdXN0b21UaGVtZVwiO1xuaW1wb3J0IExvYWRlciBmcm9tIFwiLi4vTG9hZGVyXCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nL0NvbnRleHRcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuXG5pbXBvcnQgRmlsdGVycyBmcm9tIFwiLi4vRmlsdGVyc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFdpZGdldFRhYnMgZnJvbSBcIi4uL1dpZGdldFRhYnNcIjtcbmltcG9ydCBTdW1taXRIZWFkZXIgZnJvbSBcIi4uL1N1bW1pdEhlYWRlclwiO1xuXG5jb25zdCBXaWRnZXRXcmFwcGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21lc3NhZ2UsIHNldE1lc3NhZ2VdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFttZXNzYWdlQ2FsbGJhY2ssIHNldE1lc3NhZ2VDYWxsYmFja10gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3Qge1xuICAgIGxvYWRpbmcsXG4gICAgYXBpRXJyb3IsXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QXBpRXJyb3IgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRFcnJvcigpKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcGlFcnJvcikge1xuICAgICAgc2V0TWVzc2FnZShhcGlFcnJvcik7XG4gICAgICBzZXRNZXNzYWdlQ2FsbGJhY2socmVzZXRBcGlFcnJvcik7XG4gICAgfVxuICB9LCBbYXBpRXJyb3JdKTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXJWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZUZpbHRlcihmaWx0ZXJWYWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU29ydCA9IChzb3J0VmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VTb3J0KHNvcnRWYWx1ZSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEN1c3RvbVRoZW1lPlxuICAgICAgPExvYWRlciBvcGVuPXtsb2FkaW5nfSAvPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIW1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHtcbiAgICAgICAgICBzZXRNZXNzYWdlKG51bGwpO1xuICAgICAgICAgIGlmIChtZXNzYWdlQ2FsbGJhY2spIG1lc3NhZ2VDYWxsYmFjaygpO1xuICAgICAgICB9fVxuICAgICAgICBib2R5PXttZXNzYWdlPy5ib2R5fVxuICAgICAgICB0aXRsZT17bWVzc2FnZT8udGl0bGV9XG4gICAgICAvPlxuICAgICAgPEZpbHRlcnNcbiAgICAgICAgb25GaWx0ZXI9e29uRmlsdGVyfVxuICAgICAgICBvblNvcnQ9e29uU29ydH1cbiAgICAgICAgb25TZWFyY2g9e29uRmlsdGVyfVxuICAgICAgICBvblJlc2V0PXtvblJlc2V0fVxuICAgICAgLz5cbiAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRzVGl0bGVUZXh0fT5cbiAgICAgICAgICB7ZmlsdGVyVmFsdWVzXG4gICAgICAgICAgICA/IHQoXCJsYWJlbHMuc2VhcmNoX3Jlc3VsdHNcIiwgeyBmaWx0ZXI6IGZpbHRlclZhbHVlcyB9KVxuICAgICAgICAgICAgOiB0KFwibGFiZWxzLnRpY2tldHNcIil9XG4gICAgICAgIDwvaDM+XG4gICAgICA8L0JveD5cbiAgICAgIDxDdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXsoc2V0TWVzc2FnZSwgc2V0TWVzc2FnZUNhbGxiYWNrKX0+XG4gICAgICAgIDxXaWRnZXRUYWJzIHRpdGxlPXs8U3VtbWl0SGVhZGVyIC8+fSAvPlxuICAgICAgPC9DdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tVGhlbWU+XG4gICk7XG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoV2lkZ2V0V3JhcHBlcik7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChydW4pIHtcbiAgICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3duZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bl0pO1xuXG4gIGNvbnN0IHsgZXh0cmFRdWVzdGlvbnMsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZVxuICApO1xuXG4gIHJldHVybiB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUdldFRpY2tldDtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBTbW9vdGggc2Nyb2xsaW5nIGZ1bmN0aW9uIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuZnVuY3Rpb24gc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCB0YXJnZXRTY3JvbGxUb3AsIGR1cmF0aW9uKSB7XG4gIGNvbnN0IHN0YXJ0U2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgY29uc3QgZGlzdGFuY2UgPSB0YXJnZXRTY3JvbGxUb3AgLSBzdGFydFNjcm9sbFRvcDtcbiAgbGV0IHN0YXJ0VGltZSA9IG51bGw7XG5cbiAgZnVuY3Rpb24gYW5pbWF0aW9uU3RlcCh0aW1lc3RhbXApIHtcbiAgICBpZiAoIXN0YXJ0VGltZSkgc3RhcnRUaW1lID0gdGltZXN0YW1wO1xuICAgIGNvbnN0IGVsYXBzZWQgPSB0aW1lc3RhbXAgLSBzdGFydFRpbWU7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5taW4oZWxhcHNlZCAvIGR1cmF0aW9uLCAxKTtcbiAgICBjb25zdCBlYXNlSW5PdXRRdWFkID1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICBwcm9ncmVzcyA8IDAuNSA/IDIgKiBwcm9ncmVzcyAqKiAyIDogMSAtICgtMiAqIHByb2dyZXNzICsgMikgKiogMiAvIDI7XG5cbiAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gc3RhcnRTY3JvbGxUb3AgKyBkaXN0YW5jZSAqIGVhc2VJbk91dFF1YWQ7XG5cbiAgICBpZiAoZWxhcHNlZCA8IGR1cmF0aW9uKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xufVxuXG5jb25zdCB1c2VTY3JvbGxUb0Vycm9yID0gKGZvcm1paywgY29udGFpbmVySWQpID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIGlzU3VibWl0dGluZyB9ID0gZm9ybWlrO1xuICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgY29uc3QgZXJyb3JDb3VudCA9IGVycm9yQXJyYXkubGVuZ3RoO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gc29ydCBlbGVtZW50cyBieSBwb3NpdGlvblxuICAgIGNvbnN0IGVsZW1lbnRzU29ydGVkID0gZXJyb3JBcnJheVxuICAgICAgLnJlZHVjZSgocmVzdWx0LCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgaW5wdXRbbmFtZT0nJHtlcnJvcn0nXWApO1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgY29uc3QgZWxSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmVzdWx0LnB1c2goeyBlbGVtZW50LCBlcnJvciwgdG9wOiBlbFJlY3QudG9wIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LCBbXSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRvcCAtIGIudG9wKTtcblxuICAgIGlmIChlbGVtZW50c1NvcnRlZC5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50XG4gICAgICAuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVySWQpXG4gICAgICAucXVlcnlTZWxlY3RvcihcIi5NdWlEcmF3ZXItcGFwZXJcIik7XG4gICAgY29uc3QgdGFyZ2V0ID0gZWxlbWVudHNTb3J0ZWRbMF07XG5cbiAgICBpZiAoY29udGFpbmVyPy5jb250YWlucyh0YXJnZXQuZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXG4gICAgICBjb25zdCBlbGVtT2ZmZXN0ID0gMTAwO1xuICAgICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxuICAgICAgICB0YXJnZXQudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wIC0gZWxlbU9mZmVzdDtcblxuICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgcG9zaXRpb25cbiAgICAgIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgc2Nyb2xsVG9wLCBhbmltYXRpb25EdXJhdGlvbik7IC8vIDUwMG1zIGR1cmF0aW9uXG4gICAgfVxuICB9LCBbaXNTdWJtaXR0aW5nXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VTY3JvbGxUb0Vycm9yO1xuIiwiaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KTtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgIHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSB8fFxuICAgIHRpY2tldD8ucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG4gIGNvbnN0IGNhblJlYXNzaWduID1cbiAgICAhaXNVbmFzc2lnbmVkICYmXG4gICAgdGlja2V0LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fcmVhc3NpZ24gJiZcbiAgICAoIXRpY2tldC5wcm9tb19jb2RlIHx8IHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fcmVhc3NpZ24pO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGUsXG4gICAgY2FuUmVhc3NpZ25cbiAgfTtcbn07XG4iLCJpbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgaW5pdFJlYWN0STE4bmV4dCB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgTGFuZ3VhZ2VEZXRlY3RvciBmcm9tIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIjtcbmltcG9ydCBlbiBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzb25cIjtcbmltcG9ydCBlcyBmcm9tIFwiLi9sb2NhbGVzL2VzLmpzb25cIjtcblxuLy8gaW1wb3J0IEJhY2tlbmQgZnJvbSAnaTE4bmV4dC1odHRwLWJhY2tlbmQnO1xuLy8gZG9uJ3Qgd2FudCB0byB1c2UgdGhpcz9cbi8vIGhhdmUgYSBsb29rIGF0IHRoZSBRdWljayBzdGFydCBndWlkZVxuLy8gZm9yIHBhc3NpbmcgaW4gbG5nIGFuZCB0cmFuc2xhdGlvbnMgb24gaW5pdFxuXG5pMThuXG4gIC8vIGxvYWQgdHJhbnNsYXRpb24gdXNpbmcgaHR0cCAtPiBzZWUgL3B1YmxpYy9sb2NhbGVzIChpLmUuIGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L3JlYWN0LWkxOG5leHQvdHJlZS9tYXN0ZXIvZXhhbXBsZS9yZWFjdC9wdWJsaWMvbG9jYWxlcylcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1odHRwLWJhY2tlbmRcbiAgLy8gd2FudCB5b3VyIHRyYW5zbGF0aW9ucyB0byBiZSBsb2FkZWQgZnJvbSBhIHByb2Zlc3Npb25hbCBDRE4/ID0+IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2NpemUvcmVhY3QtdHV0b3JpYWwjc3RlcC0yLS0tdXNlLXRoZS1sb2NpemUtY2RuXG4gIC8vIC51c2UoQmFja2VuZClcbiAgLy8gZGV0ZWN0IHVzZXIgbGFuZ3VhZ2VcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlRGV0ZWN0b3JcbiAgLnVzZShMYW5ndWFnZURldGVjdG9yKVxuICAvLyBwYXNzIHRoZSBpMThuIGluc3RhbmNlIHRvIHJlYWN0LWkxOG5leHQuXG4gIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgLy8gaW5pdCBpMThuZXh0XG4gIC8vIGZvciBhbGwgb3B0aW9ucyByZWFkOiBodHRwczovL3d3dy5pMThuZXh0LmNvbS9vdmVydmlldy9jb25maWd1cmF0aW9uLW9wdGlvbnNcbiAgLmluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBcImVuXCIsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIHJlc291cmNlczoge1xuICAgICAgZW46IHsgdHJhbnNsYXRpb246IGVuIH0sXG4gICAgICBlczogeyB0cmFuc2xhdGlvbjogZXMgfVxuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBTVEFSVF9MT0FESU5HLFxuICBTVE9QX0xPQURJTkcsXG4gIFJFU0VUX0xPQURJTkdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfTVlfQVNTSUdORURfVElDS0VUUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVCxcbiAgQVNTSUdOX1RJQ0tFVCxcbiAgUkVTRVRfQVBJX0VSUk9SLFxuICBTRVRfQVBJX0VSUk9SLFxuICBSRVNFVF9USUNLRVQsXG4gIENIQU5HRV9GSUxURVIsXG4gIENIQU5HRV9TT1JULFxuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSLFxuICBGSUxURVJfVkFSX0RBVEUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBERUxFR0FURV9USUNLRVRcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSwgVEFCUyB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgaGFzTG9hZGVkQWxsRGF0YSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IERFRkFVTFRfRklMVEVSX1NUQVRFID0ge1xuICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogW10sXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogW10sXG4gIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IFwiXCIsXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX1BST01PQ09ERV06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCIsXG4gIFtGSUxURVJfVkFSX0RBVEVdOiBudWxsXG59O1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgdXNlclRpY2tldHM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBjdXJyZW50X3RhYjogVEFCUy5PUkRFUlMsXG4gIHNvcnQ6IHt9LFxuICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICBpc09yZGVyTG9hZGluZzogZmFsc2UsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDAsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDAsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAwLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAwLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiAwLFxuICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiAwLFxuICBhcGlFcnJvcjogbnVsbFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBTVEFSVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IHRydWUgfTtcbiAgICBjYXNlIFNUT1BfTE9BRElORzpcbiAgICBjYXNlIFJFU0VUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogZmFsc2UgfTtcbiAgICBjYXNlIFJFU0VUX0FQSV9FUlJPUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogbnVsbCB9O1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gICAgICAgIHNvcnQ6IHt9LFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9BUElfRVJST1I6IHtcbiAgICAgIGNvbnN0IHsgdGl0bGUsIGh0bWw6IGJvZHkgfSA9IHBheWxvYWQ7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IHsgdGl0bGUsIGJvZHkgfSB9O1xuICAgIH1cbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIENIQU5HRV9GSUxURVI6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBmaWx0ZXI6IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH0gfTtcbiAgICB9XG4gICAgY2FzZSBDSEFOR0VfU09SVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNvcnQ6IHsgLi4ucGF5bG9hZCB9IH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1VTRVJfT1JERVJTOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBtZW1iZXJPcmRlcnMsIHRvdGFsKSkgcmV0dXJuIHN0YXRlO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4ubWVtYmVyT3JkZXJzLCAuLi5kYXRhXSxcbiAgICAgICAgb3JkZXJzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFM6IHtcbiAgICAgIGNvbnN0IHsgdXNlclRpY2tldHMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgdXNlclRpY2tldHMsIHRvdGFsKSkgcmV0dXJuIHN0YXRlO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXNlclRpY2tldHM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi51c2VyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHVzZXJfdGlja2V0c190b3RhbDogdG90YWwsXG4gICAgICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBmb3JtZXJPcmRlcj8ubWVtYmVyVGlja2V0cywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4uZm9ybWVyT3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogWy4uLmZvcm1lck9yZGVyLm1lbWJlclRpY2tldHMsIC4uLmRhdGFdLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfbGFzdDogbGFzdF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3RvdGFsOiB0b3RhbFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQ6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPSBwYXlsb2FkO1xuICAgICAgY29uc3Qgb3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZChcbiAgICAgICAgKG8pID0+IG8uaWQgPT09IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWRbMF0/Lm9yZGVyX2lkXG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cy5tYXAoXG4gICAgICAgICh0aWNrZXQpID0+XG4gICAgICAgICAgdGlja2V0c1JlZnVuZFJlcXVlc3RlZC5maW5kKCh0cnIpID0+IHRyci5pZCA9PT0gdGlja2V0LmlkKSB8fCB0aWNrZXRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLm9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOiB1cGRhdGVkVGlja2V0c1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFJFU0VUX1RJQ0tFVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IG51bGwgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUzoge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBjYXNlIERFTEVHQVRFX1RJQ0tFVDpcbiAgICBjYXNlIEFTU0lHTl9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IG9yZGVyLm1lbWJlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICBpZiAodGlja2V0LmlkID09PSB0aWNrZXREYXRhLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGlja2V0RGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRpY2tldDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0RGF0YSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHtcbiAgY2xpZW50SWQsXG4gIGxvZ2luVXJsLFxuICBzdW1taXQsXG4gIGFwaUJhc2VVcmwsXG4gIHVwZGF0ZVByb2ZpbGVcbn0pID0+IHtcbiAgLy8gdG8gYWRkIG90aGVyIHJlZHVjZXJzIGxhdGVyXG4gIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAgICB3aWRnZXRTdGF0ZTogV2lkZ2V0UmVkdWNlclxuICB9KTtcblxuICBjb25zdCBzdG9yZSA9IGNvbmZpZ3VyZVN0b3JlKHtcbiAgICByZWR1Y2VyOiBwZXJzaXN0UmVkdWNlcihcbiAgICAgIHtcbiAgICAgICAga2V5OiBgcm9vdF9teV9vcmRlcnNfdGlja2V0c18ke2NsaWVudElkfWAsXG4gICAgICAgIHN0b3JhZ2VcbiAgICAgIH0sXG4gICAgICByZWR1Y2Vyc1xuICAgICksXG4gICAgbWlkZGxld2FyZTogKGdldERlZmF1bHRNaWRkbGV3YXJlKSA9PlxuICAgICAgZ2V0RGVmYXVsdE1pZGRsZXdhcmUoe1xuICAgICAgICB0aHVuazoge1xuICAgICAgICAgIGV4dHJhQXJndW1lbnQ6IHtcbiAgICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgICAgYXBpQmFzZVVybCxcbiAgICAgICAgICAgIHN1bW1pdCxcbiAgICAgICAgICAgIGxvZ2luVXJsLFxuICAgICAgICAgICAgdXBkYXRlUHJvZmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldDo6Z2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gIH1cbn07XG4iLCJleHBvcnQgY29uc3QgTEFTVF9IT1VSX09GXzI0X0hPVVIgPSAyMztcbmV4cG9ydCBjb25zdCBMQVNUX01JTlVURV9PRl9IT1VSID0gNTk7XG5leHBvcnQgY29uc3QgT05FX1BBR0VfTkVYVCA9IDE7XG5leHBvcnQgY29uc3QgTUlMTElTRUNfVE9fU0VDID0gMTAwMDtcbmV4cG9ydCBjb25zdCBPTkVfREFZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gNTtcbmV4cG9ydCBjb25zdCBGSVJTVF9QQUdFID0gMTtcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgPSA1O1xuZXhwb3J0IGNvbnN0IFNURVBfT05FID0gMTtcbmV4cG9ydCBjb25zdCBTVEVQX1RXTyA9IDI7XG5leHBvcnQgY29uc3QgU1RFUF9USFJFRSA9IDM7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIlNUQVRVU19DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJTVEFUVVNfSU5DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QRU5ESU5HID0gXCJTVEFUVVNfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIlNUQVRVU19DQU5DRUxMRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfRVJST1IgPSBcIlNUQVRVU19FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QUk9DRVNTSU5HID0gXCJTVEFUVVNfUFJPQ0VTU0lOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJTVEFUVVNfVU5BU1NJR05FRFwiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HID0gXCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEID0gXCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCA9IFwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElOR19MQyA9IFwiUmVxdWVzdGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyA9IFwiQXBwcm92ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDID0gXCJSZWplY3RlZFwiO1xuXG5leHBvcnQgY29uc3QgSkVTVF9USU1FT1VUX0lOX01JTExJU0VDID0gMTAwMDA7XG5cbmV4cG9ydCBjb25zdCBPTkVfSVRFTSA9IDE7XG5leHBvcnQgY29uc3QgVFdPX0lURU0gPSAyO1xuZXhwb3J0IGNvbnN0IEZJVkVfSVRFTSA9IDU7XG5leHBvcnQgY29uc3QgU0lYX0lURU0gPSA2O1xuXG5leHBvcnQgY29uc3QgUFJPTUlTRV9CQVRDSF9MSU1JVCA9IDEwO1xuZXhwb3J0IGNvbnN0IEZJRlRZX1BFUl9QQUdFID0gNTA7XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9DT0RFUyA9IHtcbiAgNDAxOiA0MDEsXG4gIDQwMzogNDAxLFxuICA0MTI6IDQwMSxcbiAgNTAwOiA1MDBcbn07XG5cbmV4cG9ydCBjb25zdCBUQUJTID0ge1xuICBPUkRFUlM6IFwiT1JERVJTXCIsXG4gIFRJQ0tFVFM6IFwiVElDS0VUU1wiXG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgTEFTVF9IT1VSX09GXzI0X0hPVVIsXG4gIExBU1RfTUlOVVRFX09GX0hPVVIsXG4gIE1JTExJU0VDX1RPX1NFQyxcbiAgRklSU1RfUEFHRVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKHZhbHVlLCB7IGxvY2FsZSA9IFwiZW4tVVNcIiwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGN1cnJlbmN5OiBcIlVTRFwiLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgfTtcblxuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zXG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlID0gKGRhdGV0aW1lLCB0aW1lWm9uZSkgPT4ge1xuICBpZiAodGltZVpvbmUpXG4gICAgcmV0dXJuIG1vbWVudFxuICAgICAgLnR6KGRhdGV0aW1lICogTUlMTElTRUNfVE9fU0VDLCB0aW1lWm9uZSlcbiAgICAgIC5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xuXG4gIHJldHVybiBtb21lbnQudW5peChkYXRldGltZSkuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVPcmRlclRvdGFscyA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBpZiAoIW9yZGVyIHx8ICFzdW1taXQpIHJldHVybiB7fTtcbiAgY29uc3QgdGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzO1xuICBpZiAoIXRpY2tldHMpIHJldHVybiB7fTtcblxuICBjb25zdCB7IHJlZnVuZGVkX2Ftb3VudCwgZGlzY291bnRfYW1vdW50LCB0YXhlc19hbW91bnQsIGFtb3VudCB9ID0gb3JkZXI7XG4gIGNvbnN0IHsgdGlja2V0X3R5cGVzIH0gPSBzdW1taXQ7XG5cbiAgY29uc3QgdGlja2V0U3VtbWFyeSA9IFtdO1xuICBsZXQgcHVyY2hhc2VUaWNrZXRUb3RhbCA9IDA7XG5cbiAgY29uc3QgY3VycmVuY3lPYmplY3QgPSB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9O1xuXG4gIE9iamVjdC5rZXlzKG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSkubWFwKCh0aWNrZXQpID0+IHtcbiAgICBjb25zdCB0aWNrZXRUeXBlID0gdGlja2V0X3R5cGVzPy5maW5kKCh0dCkgPT4gdHQubmFtZSA9PT0gdGlja2V0KTtcbiAgICBpZiAoIXRpY2tldFR5cGUpIHJldHVybiBudWxsO1xuICAgIHRpY2tldFN1bW1hcnkucHVzaCh7XG4gICAgICB0aWNrZXRfdHlwZV9pZDogdGlja2V0VHlwZS5pZCxcbiAgICAgIHRpY2tldF90eXBlOiB0aWNrZXRUeXBlLFxuICAgICAgbmFtZTogdGlja2V0LFxuICAgICAgcXR5OiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XVxuICAgIH0pO1xuICAgIHB1cmNoYXNlVGlja2V0VG90YWwgKz1cbiAgICAgIHRpY2tldFR5cGUuY29zdCAqIG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdO1xuXG4gICAgcmV0dXJuIHRpY2tldFN1bW1hcnk7XG4gIH0pO1xuXG4gIGNvbnN0IHB1cmNoYXNlVG90YWwgPSBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRpY2tldFRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgY29uc3QgZGlzY291bnRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KGRpc2NvdW50X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCByZWZ1bmRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJlZnVuZGVkX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCB0YXhlc1RvdGFsID0gZm9ybWF0Q3VycmVuY3kodGF4ZXNfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IGFtb3VudFRvdGFsID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZGVyLCBcImFtb3VudFwiKVxuICAgID8gZm9ybWF0Q3VycmVuY3koYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICA6IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICByZXR1cm4ge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgdGF4ZXNUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJUaWNrZXRzID0gKG1lbWJlck9yZGVycywgb3JkZXJJZCkgPT4ge1xuICBjb25zdCBvcmRlcnMgPSBtZW1iZXJPcmRlcnMuZmlsdGVyKChvKSA9PiBvLmlkID09PSBvcmRlcklkKTtcbiAgcmV0dXJuIG9yZGVyc1swXT8ubWVtYmVyVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgPSAodHMpID0+IHtcbiAgY29uc3QgbG93ZXIgPSB0cy5zZXRIb3VycygwLCAwLCAwLCAwKSAvIE1JTExJU0VDX1RPX1NFQztcbiAgY29uc3QgdXBwZXIgPVxuICAgIHRzLnNldEhvdXJzKExBU1RfSE9VUl9PRl8yNF9IT1VSLCBMQVNUX01JTlVURV9PRl9IT1VSLCAwLCAwKSAvXG4gICAgTUlMTElTRUNfVE9fU0VDO1xuICByZXR1cm4ge1xuICAgIGxvd2VyLFxuICAgIHVwcGVyXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEN1cnJlbnRUaW1lID0gKCkgPT5cbiAgTWF0aC5yb3VuZCgrbmV3IERhdGUoKSAvIE1JTExJU0VDX1RPX1NFQyk7XG5cbmV4cG9ydCBjb25zdCBnZXROb3cgPSAoKSA9PiAoZGlzcGF0Y2gsIGdldFN0YXRlKSA9PiB7XG4gIGNvbnN0IHsgdGltZXJTdGF0ZSB9ID0gZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIHRpbWVyU3RhdGU/Lm5vd1V0YyA9PSBudWxsID8gZGVmYXVsdEN1cnJlbnRUaW1lKCkgOiB0aW1lclN0YXRlPy5ub3dVdGM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTm93ID0gKCkgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgcmV0dXJuIGRpc3BhdGNoKGdldE5vdygpKTtcbn07XG5cbi8qKlxuICogQHBhcmFtIHJlcXVlc3RlZFBhZ2VcbiAqIEBwYXJhbSBjdXJyZW50UGFnZVxuICogQHBhcmFtIGxhc3RQYWdlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IHNob3VsZEZldGNoRGF0YSA9IChyZXF1ZXN0ZWRQYWdlLCBjdXJyZW50UGFnZSwgbGFzdFBhZ2UpID0+IHtcbiAgbGV0IHJlcyA9IHRydWU7XG5cbiAgaWYgKHJlcXVlc3RlZFBhZ2UgPD0gMCkgcmVzID0gZmFsc2U7XG5cbiAgY29uc3QgaXNTYW1lUGFnZSA9IGN1cnJlbnRQYWdlID4gMCAmJiByZXF1ZXN0ZWRQYWdlID09PSBjdXJyZW50UGFnZTtcbiAgY29uc3QgaXNMYXN0UGFnZSA9IGN1cnJlbnRQYWdlID4gMCAmJiBjdXJyZW50UGFnZSA9PT0gbGFzdFBhZ2U7XG5cbiAgaWYgKGlzU2FtZVBhZ2UgfHwgaXNMYXN0UGFnZSkgcmVzID0gZmFsc2U7XG5cbiAgaWYgKHJlcXVlc3RlZFBhZ2UgPT09IEZJUlNUX1BBR0UpIHJlcyA9IHRydWU7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYG15LW9yZGVycy10aWNrZXQtd2lkZ2V0Ojp1dGlsczo6c2hvdWxkRmV0Y2hEYXRhIHJlcXVlc3RlZFBhZ2UgJHtyZXF1ZXN0ZWRQYWdlfSBjdXJyZW50UGFnZSAke2N1cnJlbnRQYWdlfSBsYXN0UGFnZSAke2xhc3RQYWdlfSByZXMgJHtyZXN9YFxuICApO1xuXG4gIHJldHVybiByZXM7XG59O1xuXG4vKipcbiAqIEBwYXJhbSBjdXJyZW50UGFnZVxuICogQHBhcmFtIGxhc3RQYWdlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc01vcmUyRmV0Y2ggPSAoY3VycmVudFBhZ2UsIGxhc3RQYWdlKSA9PiB7XG4gIGNvbnN0IHJlcyA9IGN1cnJlbnRQYWdlID4gMCAmJiBjdXJyZW50UGFnZSA8IGxhc3RQYWdlO1xuICBjb25zb2xlLmxvZyhcbiAgICBgbXktb3JkZXJzLXRpY2tldC13aWRnZXQ6OnV0aWxzOjpoYXNNb3JlMkZldGNoIGN1cnJlbnRQYWdlICR7Y3VycmVudFBhZ2V9IGxhc3RQYWdlICR7bGFzdFBhZ2V9IHJlcyAke3Jlc31gXG4gICk7XG4gIHJldHVybiByZXM7XG59O1xuXG4vKipcbiAqIEBwYXJhbSBjdXJyZW50UGFnZVxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSB0b3RhbFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBoYXNMb2FkZWRBbGxEYXRhID0gKGN1cnJlbnRQYWdlLCBkYXRhLCB0b3RhbCkgPT4ge1xuICBsZXQgcmVzID0gZmFsc2U7XG4gIGNvbnN0IGRhdGFMZW5ndGggPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YS5sZW5ndGggOiAwO1xuICAvLyB3ZSBhbHJlYWR5IGxvYWRlZCBhbGwgIGRhdGEgKCBmaXJzdCBwYWdlIGlzIGFsd2F5cyByZWxvYWRlZCBpdCApXG4gIGlmIChjdXJyZW50UGFnZSA+IEZJUlNUX1BBR0UgJiYgZGF0YUxlbmd0aCA+IDAgJiYgZGF0YUxlbmd0aCA9PT0gdG90YWwpXG4gICAgcmVzID0gdHJ1ZTtcbiAgY29uc29sZS5sb2coXG4gICAgYG15LW9yZGVycy10aWNrZXQtd2lkZ2V0Ojp1dGlsczo6aGFzTG9hZGVkQWxsRGF0YSBjdXJyZW50UGFnZSAke2N1cnJlbnRQYWdlfSBkYXRhLmxlbmd0aCAke2RhdGFMZW5ndGh9IHJlcyAke3Jlc31gXG4gICk7XG4gIHJldHVybiByZXM7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1VOQVNTSUdORUQsXG4gIFNUQVRVU19SRUZVTkRfUEVORElORyxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDLFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDLFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/Lm5ldF9zZWxsaW5nX2Nvc3QgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoaXNSZXF1aXJlZCkge1xuICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgaW5jbHVkZURpc2NsYWltZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gfHwgb3duZXIuZW1haWwgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdIHx8IG93bmVyLmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gfHwgb3duZXIuY29tcGFueTtcbiAgfVxuXG4gIGlmIChpbmNsdWRlRGlzY2xhaW1lcikge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gfHxcbiAgICAgIG93bmVyLmRpc2NsYWltZXJfYWNjZXB0ZWQ7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLmlkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBzY2hlbWFbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKHEudHlwZSwgcS5uYW1lLCBxLm1hbmRhdG9yeSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb24gPSBydWxlLnN1Yl9xdWVzdGlvbjtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1YlF1ZXN0aW9uLm5hbWUsIHN1YlF1ZXN0aW9uLmlkKTtcbiAgICAgICAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICAgICAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKVxuICAgICAgICAgIC5udWxsYWJsZSgpXG4gICAgICAgICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICAgICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2gocXVlc3Rpb25BbnMsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG4gICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGVuOiAoc2NoKSA9PiBzY2gucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSlcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY29weUljb25fX19sSTNlUVwiO1xudmFyIF8yID0gXCJyZXZlcnNlZF9fX3pKem1EXCI7XG52YXIgXzMgPSBcInRydW5jYXRlZF9fX2pXU25VXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19tVlBpUlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJjb3B5SWNvblwiLCBfMiBhcyBcInJldmVyc2VkXCIsIF8zIGFzIFwidHJ1bmNhdGVkXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fbXhFS1dcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fTzRzU3NcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19fRjNudUtcIjtcbnZhciBfNCA9IFwiY2xlYW5CdXR0b25fX19xcUR2VVwiO1xudmFyIF81ID0gXCJjb250YWluZXJfX19RZVFZX1wiO1xudmFyIF82ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fWjQybXdcIjtcbnZhciBfNyA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVFo3a0pcIjtcbnZhciBfOCA9IFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJfX19rVW5XOVwiO1xudmFyIF85ID0gXCJmaWx0ZXJDb250YWluZXJfX19ycnFwOVwiO1xudmFyIF9hID0gXCJmaWx0ZXJEYXRlTGFiZWxfX19KZ2Jjc1wiO1xudmFyIF9iID0gXCJmaWx0ZXJJY29uX19faWlPem9cIjtcbnZhciBfYyA9IFwiZmlsdGVyTGFiZWxfX19za1pQN1wiO1xudmFyIF9kID0gXCJmaWx0ZXJMaXN0Q29udGFpbmVyX19fSURybFNcIjtcbnZhciBfZSA9IFwiZmlsdGVyTnVtQWN0aXZlX19fa21FRUtcIjtcbnZhciBfZiA9IFwiZmlsdGVyU29ydENvbnRhaW5lcl9fX25oTkpzXCI7XG52YXIgXzEwID0gXCJsYWJlbF9fX0xBbWVfXCI7XG52YXIgXzExID0gXCJzaG93RmlsdGVyTGlzdF9fX0lXNHhHXCI7XG52YXIgXzEyID0gXCJzb3J0Q29udGFpbmVyX19fc2I1QmRcIjtcbnZhciBfMTMgPSBcInNvcnRJY29uX19fY19YWmlcIjtcbnZhciBfMTQgPSBcInNvcnRMYWJlbF9fX2RYaU15XCI7XG52YXIgXzE1ID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX1BwMlhnXCI7XG52YXIgXzE2ID0gXCJ0aXRsZVdyYXBwZXJfX19QNm1QdVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lXCIsIF8yIGFzIFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyXCIsIF8zIGFzIFwiY2FsZW5kYXJEaXNwbGF5XCIsIF80IGFzIFwiY2xlYW5CdXR0b25cIiwgXzUgYXMgXCJjb250YWluZXJcIiwgXzYgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF83IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF84IGFzIFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJcIiwgXzkgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgX2EgYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJJY29uXCIsIF9jIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2QgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9lIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9mIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfMTAgYXMgXCJsYWJlbFwiLCBfMTEgYXMgXCJzaG93RmlsdGVyTGlzdFwiLCBfMTIgYXMgXCJzb3J0Q29udGFpbmVyXCIsIF8xMyBhcyBcInNvcnRJY29uXCIsIF8xNCBhcyBcInNvcnRMYWJlbFwiLCBfMTUgYXMgXCJzb3J0TGlzdENvbnRhaW5lclwiLCBfMTYgYXMgXCJ0aXRsZVdyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2FuY2VsQnRuX19fcURleGhcIjtcbnZhciBfMiA9IFwiZm9vdGVyX19fU043MHlcIjtcbnZhciBfMyA9IFwic2F2ZUJ0bl9fX25iVTZjXCI7XG5leHBvcnQgeyBfMSBhcyBcImNhbmNlbEJ0blwiLCBfMiBhcyBcImZvb3RlclwiLCBfMyBhcyBcInNhdmVCdG5cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiZXJyb3JMYWJlbF9fX25vY3lYXCI7XG5leHBvcnQgeyBfMSBhcyBcImVycm9yTGFiZWxcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibXlPcmRlcnNXcmFwcGVyX19fSEpteXNcIjtcbnZhciBfMiA9IFwibm9PcmRlcnNGb3VuZF9fX0RSd2dvXCI7XG52YXIgXzMgPSBcIm5vT3JkZXJzSWNvbldyYXBwZXJfX190UFRtWVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJteU9yZGVyc1dyYXBwZXJcIiwgXzIgYXMgXCJub09yZGVyc0ZvdW5kXCIsIF8zIGFzIFwibm9PcmRlcnNJY29uV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJhc3NpZ25Ub01lVGV4dF9fX1pQYWV4XCI7XG52YXIgXzMgPSBcImFzc2lnbmVkQnlUZXh0X19fYk5aN3pcIjtcbnZhciBfNCA9IFwiYXNzaWduZWRUb01lRGVzX19fR2pGa1ZcIjtcbnZhciBfNSA9IFwiYXNzaWduZWRUb01lV3JhcHBlcl9fX1V4YzJ5XCI7XG52YXIgXzYgPSBcImJhZGdlRmVhdHVyZV9fX0EyTE1WXCI7XG52YXIgXzcgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19JUUxOUFwiO1xudmFyIF84ID0gXCJjaGVja2JveF9fX1haSnBiXCI7XG52YXIgXzkgPSBcImRpc2FibGVkUmVmdW5kX19fU2ZmbDdcIjtcbnZhciBfYSA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfYiA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF9jID0gXCJub09yZGVyc0ljb25XcmFwcGVyX19fZWZ5cnBcIjtcbnZhciBfZCA9IFwibm9UaWNrZXRzRm91bmRfX19qTG9jb1wiO1xudmFyIF9lID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgX2YgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgXzEwID0gXCJvcmRlclRpY2tldEluZm9Db250YWluZXJfX19fcDY2VlwiO1xudmFyIF8xMSA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfMTIgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfMTMgPSBcInJlZnVuZEJ1dHRvbnNfX19qRGw0SFwiO1xudmFyIF8xNCA9IFwicmVmdW5kTW9kYWxfX19FcWdQRlwiO1xudmFyIF8xNSA9IFwic2VsZWN0ZWRfX19IV0dOY1wiO1xudmFyIF8xNiA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzE3ID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTggPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xOSA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xYSA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzFiID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMWMgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xZCA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJhc3NpZ25Ub01lVGV4dFwiLCBfMyBhcyBcImFzc2lnbmVkQnlUZXh0XCIsIF80IGFzIFwiYXNzaWduZWRUb01lRGVzXCIsIF81IGFzIFwiYXNzaWduZWRUb01lV3JhcHBlclwiLCBfNiBhcyBcImJhZGdlRmVhdHVyZVwiLCBfNyBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzggYXMgXCJjaGVja2JveFwiLCBfOSBhcyBcImRpc2FibGVkUmVmdW5kXCIsIF9hIGFzIFwiZGlzcGxheV9ub25lXCIsIF9iIGFzIFwibGFiZWxcIiwgX2MgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIsIF9kIGFzIFwibm9UaWNrZXRzRm91bmRcIiwgX2UgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfZiBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfMTAgYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgXzExIGFzIFwib3JkZXJXcmFwcGVyXCIsIF8xMiBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF8xMyBhcyBcInJlZnVuZEJ1dHRvbnNcIiwgXzE0IGFzIFwicmVmdW5kTW9kYWxcIiwgXzE1IGFzIFwic2VsZWN0ZWRcIiwgXzE2IGFzIFwidGFiQnV0dG9uc1wiLCBfMTcgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xOCBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzE5IGFzIFwidGlja2V0Tm9cIiwgXzFhIGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMWIgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xYyBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzFkIGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiQ1RBQnV0dG9uV3JhcHBlcl9fX0tncTZnXCI7XG52YXIgXzIgPSBcImFjdGlvbkJ1dHRvbnNfX191N21QU1wiO1xudmFyIF8zID0gXCJhcHByb3ZlZF9fX3N4RUpXXCI7XG52YXIgXzQgPSBcImJhZGdlRmVhdHVyZV9fX3RMaEVwXCI7XG52YXIgXzUgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19fOUdiRFwiO1xudmFyIF82ID0gXCJidXR0b25QaWxsX19fTGVzYXpcIjtcbnZhciBfNyA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfOCA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF85ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfYSA9IFwicGVuZGluZ19fX2FFYld3XCI7XG52YXIgX2IgPSBcInJlZnVuZERldGFpbF9fX2NRMjhWXCI7XG52YXIgX2MgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfZCA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgX2UgPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF9mID0gXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZV9fX1FYQ2pNXCI7XG52YXIgXzEwID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF8xMSA9IFwicmVqZWN0ZWRfX19OSkU0WlwiO1xudmFyIF8xMiA9IFwic3VidGl0bGVfX19QdERlMlwiO1xudmFyIF8xMyA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgXzE0ID0gXCJzdWNjZXNzTXNnMl9fX1E2em5hXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXRMaXN0X19fZURRUjNcIjtcbnZhciBfMTYgPSBcInRpY2tldE5vX19fX0VBRDRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiQ1RBQnV0dG9uV3JhcHBlclwiLCBfMiBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzMgYXMgXCJhcHByb3ZlZFwiLCBfNCBhcyBcImJhZGdlRmVhdHVyZVwiLCBfNSBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzYgYXMgXCJidXR0b25QaWxsXCIsIF83IGFzIFwiY2FuY2VsQnV0dG9uXCIsIF84IGFzIFwiY29udGludWVCdXR0b25cIiwgXzkgYXMgXCJkZWxldGVJY29uXCIsIF9hIGFzIFwicGVuZGluZ1wiLCBfYiBhcyBcInJlZnVuZERldGFpbFwiLCBfYyBhcyBcInJlZnVuZEVycm9yTXNnXCIsIF9kIGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfZSBhcyBcInJlZnVuZFRleHRcIiwgX2YgYXMgXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZVwiLCBfMTAgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgXzExIGFzIFwicmVqZWN0ZWRcIiwgXzEyIGFzIFwic3VidGl0bGVcIiwgXzEzIGFzIFwic3VjY2Vzc01zZ1wiLCBfMTQgYXMgXCJzdWNjZXNzTXNnMlwiLCBfMTUgYXMgXCJ0aWNrZXRMaXN0XCIsIF8xNiBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNsb3NlQnRuX19feVNRQ09cIjtcbnZhciBfMiA9IFwiaGVhZGVyX19fZkJYRzlcIjtcbnZhciBfMyA9IFwidGl0bGVfX190eVplUVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUk9KR3NcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2xvc2VCdG5cIiwgXzIgYXMgXCJoZWFkZXJcIiwgXzMgYXMgXCJ0aXRsZVwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwic3VtbWl0VGl0bGVEYXRlX19fWG5ycEZcIjtcbnZhciBfMiA9IFwid2lkZ2V0SGVhZGVyX19fZ2dMdE1cIjtcbmV4cG9ydCB7IF8xIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8yIGFzIFwid2lkZ2V0SGVhZGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImhlYWRlck5vdGVfX19BZTVFQVwiO1xudmFyIF8yID0gXCJvcmRlck5vX19fVk9QUndcIjtcbnZhciBfMyA9IFwicHVyY2hhc2VkQnlfX19NTmlIVFwiO1xudmFyIF80ID0gXCJwdXJjaGFzZWRCeVdyYXBwZXJfX19EaDZIVVwiO1xudmFyIF81ID0gXCJ3cmFwcGVyX19fbVZ1aVpcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaGVhZGVyTm90ZVwiLCBfMiBhcyBcIm9yZGVyTm9cIiwgXzMgYXMgXCJwdXJjaGFzZWRCeVwiLCBfNCBhcyBcInB1cmNoYXNlZEJ5V3JhcHBlclwiLCBfNSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXNzaWduT3B0aW9uc1dyYXBwZXJfX19vakZfN1wiO1xudmFyIF8yID0gXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lcl9fX2dPdGFKXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnbk9wdGlvbnNXcmFwcGVyXCIsIF8yIGFzIFwidGlja2V0UmVhc3NpZ25Db250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwid3JhcHBlcl9fX0V3T1J6XCI7XG5leHBvcnQgeyBfMSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaW5mb05vdGVfX19pMVhZOVwiO1xudmFyIF8yID0gXCJ3cmFwcGVyX19fTUF1TlNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaW5mb05vdGVcIiwgXzIgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJfX19BdXZyblwiO1xudmFyIF8yID0gXCJhZGRpdGlvbmFsRGV0YWlsc19fX21QMWlKXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fUTBWVXpcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19MbXJtNFwiO1xudmFyIF81ID0gXCJjbG9zZUJ0bl9fX1dOSmxFXCI7XG52YXIgXzYgPSBcImNvcHlCdG5fX19fdXRBNlwiO1xudmFyIF83ID0gXCJkZWxlZ2F0ZWRUb19fX1NHVlFJXCI7XG52YXIgXzggPSBcImRvd25sb2FkQnRuX19fcWpZaHpcIjtcbnZhciBfOSA9IFwiaGVhZGVyX19fQXVnbnpcIjtcbnZhciBfYSA9IFwib3JkZXJOdW1iZXJfX19MNVE1YVwiO1xudmFyIF9iID0gXCJxckNvZGVfX19md3FacVwiO1xudmFyIF9jID0gXCJxck5vdGVfX19HYzdLblwiO1xudmFyIF9kID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfZSA9IFwic2VudF9fX2s2V0t4XCI7XG52YXIgX2YgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEwID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzExID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xMiA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2xvc2VCdG5cIiwgXzYgYXMgXCJjb3B5QnRuXCIsIF83IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzggYXMgXCJkb3dubG9hZEJ0blwiLCBfOSBhcyBcImhlYWRlclwiLCBfYSBhcyBcIm9yZGVyTnVtYmVyXCIsIF9iIGFzIFwicXJDb2RlXCIsIF9jIGFzIFwicXJOb3RlXCIsIF9kIGFzIFwic2VuZEJ0blwiLCBfZSBhcyBcInNlbnRcIiwgX2YgYXMgXCJzdGF0dXNcIiwgXzEwIGFzIFwic3VidGl0bGVcIiwgXzExIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xMiBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aXZlX19fdEx5V1pcIjtcbnZhciBfMiA9IFwidGFiT3B0aW9uX19fSDRIMXVcIjtcbnZhciBfMyA9IFwidGFiV3JhcHBlcl9fX3UyMXNHXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGl2ZVwiLCBfMiBhcyBcInRhYk9wdGlvblwiLCBfMyBhcyBcInRhYldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0c1RpdGxlVGV4dF9fX1REUG1wXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldHNUaXRsZVRleHRcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9TdGFja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFJlZHVjZXJTdGF0ZSB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuaW1wb3J0IFdpZGdldFdyYXBwZXIgZnJvbSBcIi4vY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImNyZWF0ZUFjdGlvbiIsImRlbGV0ZVJlcXVlc3QiLCJnZXRSZXF1ZXN0IiwicHV0UmVxdWVzdCIsInN0YXJ0TG9hZGluZyIsInN0b3BMb2FkaW5nIiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiRVJST1JfQ09ERVMiLCJGSUZUWV9QRVJfUEFHRSIsIkZJUlNUX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiVEFCUyIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiUkVTRVRfQVBJX0VSUk9SIiwiU0VUX1NUQVRFIiwiU0VUX0FQSV9FUlJPUiIsIkNIQU5HRV9GSUxURVIiLCJDSEFOR0VfU09SVCIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfTVlfQVNTSUdORURfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRVNFVF9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJBU1NJR05fVElDS0VUIiwiREVMRUdBVEVfVElDS0VUIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRUaWNrZXQiLCJkaXNwYXRjaCIsInJlc2V0U3RhdGUiLCJyZXNldEZpbHRlciIsInJlc2V0RXJyb3IiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIiwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRSIsIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIiwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMiLCJGSUxURVJfVkFSX1BST01PQ09ERSIsIkZJTFRFUl9WQVJfRlJFRV9QQUlEIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJjaGFuZ2VGaWx0ZXIiLCJmaWx0ZXIiLCJjaGFuZ2VTb3J0Iiwic29ydCIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiY3VycmVudFRhYiIsInB1c2giLCJjb25jYXQiLCJsb3dlciIsInVwcGVyIiwibGVuZ3RoIiwiZmlsdGVyTmFtZSIsIk9SREVSUyIsImpvaW4iLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZXJyb3JIYW5kbGVyTm90aWZ5IiwicGF5bG9hZCIsImNhbGxiYWNrIiwiY3VzdG9tQXV0aEVycm9ySGFuZGxlciIsImVyciIsInJlcyIsImN1c3RvbUZldGNoRXJyb3JIYW5kbGVyIiwicmVzcG9uc2UiLCJjb2RlIiwic3RhdHVzIiwibXNnIiwidCIsIk9iamVjdCIsImVudHJpZXMiLCJlcnJvcnMiLCJmb3JFYWNoIiwiX3JlZiIsImtleSIsInZhbHVlIiwiTnVtYmVyIiwiaXNOYU4iLCJzdGF0dXNUZXh0IiwidGl0bGUiLCJodG1sIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYyIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiZmllbGRzIiwiZXhwYW5kIiwiVElDS0VUUyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwiZmluYWxseSIsIm5vcm1hbGl6ZVRpY2tldCIsImVudGl0eSIsIm5vcm1hbGl6ZWRFbnRpdHkiLCJfb2JqZWN0U3ByZWFkIiwiYXR0ZW5kZWVfY29tcGFueSIsImF0dGVuZGVlX2NvbXBhbnlfaWQiLCJyZWZyZXNoUHJvZmlsZSIsImRhdGEiLCJ0aWNrZXRPd25lciIsIl9yZWYxNCIsIl90aWNrZXRPd25lciRtYW5hZ2VyIiwidXBkYXRlUHJvZmlsZSIsImF0dGVuZGVlX2VtYWlsIiwiYXR0ZW5kZWVfZmlyc3RfbmFtZSIsImF0dGVuZGVlX2xhc3RfbmFtZSIsImhhc01hbmFnZXIiLCJtYW5hZ2VyIiwibWFuYWdlcl9pZCIsIml0c01lIiwicHJvZmlsZUNoYW5nZWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwibmV3UHJvZmlsZSIsInNhdmVUaWNrZXREZXRhaWxzIiwiYW5zd2VycyIsIl9yZWYxNSIsImlkVG9rZW4iLCJ2ZXJpZmllciIsImp3dCIsImRlY29kZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsImFzc2lnbkF0dGVuZGVlIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZjE2IiwicmVhc3NpZ25UaWNrZXQiLCJfcmVmMTciLCJkZWxlZ2F0ZVRpY2tldCIsIl9yZWYxOCIsInNhdmVFeHRyYVF1ZXN0aW9ucyIsIl9yZWYxOSIsImdldFRpY2tldFBERiIsIl9yZWYyMCIsInF1ZXJ5U3RyaW5nIiwiYXBpVXJsIiwiZmV0Y2giLCJyZXNwb25zZVR5cGUiLCJoZWFkZXJzIiwib2siLCJibG9iIiwicGRmIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImhyZWYiLCJkb3dubG9hZCIsImRpc3BhdGNoRXZlbnQiLCJNb3VzZUV2ZW50IiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJ1c2VUcmFuc2xhdGlvbiIsIkJveCIsInVzZUZvcm1payIsIkV4dHJhUXVlc3Rpb25zRmllbGRzIiwiRm9ybUZvb3RlciIsInVzZVNjcm9sbFRvRXJyb3IiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiYnVpbGRWYWxpZGF0aW9uU2NoZW1hIiwicGFyc2VBbnN3ZXJzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkFzc2lnbkVRRm9ybSIsIm9uU3VibWl0Iiwib25DbG9zZSIsImZvcm1payIsImluaXRpYWxWYWx1ZXMiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwidmFsdWVzIiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImNoaWxkcmVuIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCIsImRpc2NsYWltZXIiLCJpc1JlcXVpcmVkIiwic2F2ZUxhYmVsIiwiY2FuY2VsTGFiZWwiLCJkaXNhYmxlZCIsImlzU3VibWl0dGluZyIsInByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyIsIkNvbnRlbnRDb3B5SWNvbiIsIlRvb2x0aXAiLCJNSUxMSVNFQ19UT19TRUMiLCJzdHlsZXMiLCJkZWZhdWx0V2lkdGgiLCJDb3B5VGV4dCIsInRleHQiLCJ0b29sdGlwVGV4dCIsImhpZGVDb3B5IiwidHJ1bmNhdGVkIiwicmV2ZXJzZWQiLCJ3aWR0aCIsInRvb2x0aXBUZXh0VG9Vc2UiLCJ0b29sdGlwIiwic2V0VG9vbHRpcCIsInVzZVN0YXRlIiwiY2xhc3NOYW1lcyIsImhhbmRsZUNvcHkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzZXRUaW1lb3V0IiwiY2xhc3NOYW1lIiwid3JhcHBlciIsInN0eWxlIiwiY29weUljb24iLCJvbkNsaWNrIiwic3RyaW5nIiwiYm9vbCIsIm51bWJlciIsImNyZWF0ZUNvbnRleHQiLCJkZWZhdWx0Q29udGV4dFZhbHVlIiwic2V0TWVzc2FnZSIsInNldE1lc3NhZ2VDYWxsYmFjayIsIkN1c3RvbURpYWxvZ0NvbnRleHQiLCJEaWFsb2ciLCJEaWFsb2dDb250ZW50IiwiRGlhbG9nQ29udGVudFRleHQiLCJEaWFsb2dUaXRsZSIsIkN1c3RvbURpYWxvZyIsIm9wZW4iLCJib2R5IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJUaGVtZVByb3ZpZGVyIiwiY3JlYXRlVGhlbWUiLCJkYXJrQ29sb3IiLCJyb290IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsInNlY29uZGFyeSIsInR5cG9ncmFwaHkiLCJib2R5MSIsImZvbnRTaXplIiwiaDUiLCJmb250V2VpZ2h0IiwibWFyZ2luQm90dG9tIiwiaDYiLCJjb21wb25lbnRzIiwiTXVpQnV0dG9uIiwic3R5bGVPdmVycmlkZXMiLCJsaW5lSGVpZ2h0IiwiTXVpVGFiIiwiY29sb3IiLCJNdWlUYWJzIiwiaW5kaWNhdG9yIiwiYmFja2dyb3VuZENvbG9yIiwiQ3VzdG9tVGhlbWUiLCJub2RlIiwiQ2hlY2tib3giLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsIm9uQ2hhbmdlIiwic2V0RmllbGRWYWx1ZSIsImVycm9yIiwiaGVscGVyVGV4dCIsInJlc3QiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidmFsIiwibGFiZWwiLCJ0b1N0cmluZyIsImhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSIsImNoZWNrZWQiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsIm5ld1ZhbHVlIiwidiIsInJlcXVpcmVkIiwiZnVsbFdpZHRoIiwibWFyZ2luIiwib3AiLCJjb250cm9sIiwiaW5jbHVkZXMiLCJldiIsInRhcmdldCIsIlJhd0hUTUwiLCJDaGVja2JveFF1ZXN0aW9uRmllbGQiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJEcm9wZG93blF1ZXN0aW9uRmllbGQiLCJsYWJlbElkIiwiUmFkaW8iLCJSYWRpb0dyb3VwIiwiUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCIsIlRleHRGaWVsZCIsIlRleHRRdWVzdGlvbkZpZWxkIiwiUXVlc3Rpb25UeXBlX0NoZWNrYm94IiwiUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCIsIlF1ZXN0aW9uVHlwZV9Db21ib0JveCIsIlF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3giLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0IiwiY2hlY2tSdWxlIiwicnVsZSIsImFuc3dlcl92YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhbnN3ZXJfdmFsdWVzX29wZXJhdG9yIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInF1ZXN0aW9uSWQiLCJ0ZXh0TEMiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJxIiwiX3EkbGFiZWwiLCJpc0Fuc3dlcmVkIiwiYW5zd2VyIiwiY2hlY2tJZlZhbHVlTWF0Y2giLCJjb21wYXJlVmFsIiwiYW5zd2VyQXJyYXkiLCJzb21lIiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsInR5cGUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJzcGxpdCIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJGcmFnbWVudCIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwicmVuZGVyUnVsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQ2hhbmdlIiwib25CbHVyIiwiaGFuZGxlQmx1ciIsInRvdWNoZWQiLCJCb29sZWFuIiwic3ViX3F1ZXN0aW9uX3J1bGVzIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJDYXJkSGVhZGVyIiwiSWNvbkJ1dHRvbiIsIkNvbGxhcHNlIiwiQ2FyZENvbnRlbnQiLCJFeHBhbmRNb3JlSWNvbiIsIkFzc2lnbmVkRmlsdGVyIiwib25GaWx0ZXIiLCJmaWx0ZXJWYWx1ZXMiLCJzdGF0ZSIsImlzRXhwYW5kZWQiLCJzZXRJc0V4cGFuZGVkIiwiYXNzaWduZWRWYWx1ZXMiLCJoYW5kbGVGaWx0ZXJDaGFuZ2UiLCJuZXdGaWx0ZXIiLCJ0aXRsZVdyYXBwZXIiLCJhY3Rpb24iLCJkaXNhYmxlUmlwcGxlIiwidHJhbnNmb3JtIiwidHJhbnNpdGlvbiIsImluIiwidGltZW91dCIsInVubW91bnRPbkV4aXQiLCJzeCIsInB5IiwicGIiLCJhc3NpZ25lZCIsInVzZUVmZmVjdCIsIkJhZGdlRmVhdHVyZUZpbHRlciIsImJhZGdlX2ZlYXR1cmVzX3R5cGVzIiwibmV3RmlsdGVycyIsImYiLCJiZiIsInVzZVJlZiIsIlN0YWNrIiwiRmlsdGVyTGlzdEljb24iLCJCYWRnZSIsIkJ1dHRvbiIsIkNhcmQiLCJEaXZpZGVyIiwiUGFwZXIiLCJjb25uZWN0IiwiVGlja2V0VHlwZUZpbHRlciIsIlN0YXR1c0ZpbHRlciIsIkZyZWVQYWlkRmlsdGVyIiwiUHJvbW9Db2RlRmlsdGVyIiwiRmlsdGVyIiwib25SZXNldCIsInNob3dGaWx0ZXJMaXN0Iiwic2V0U2hvd0ZpbHRlckxpc3QiLCJzaG93RGF0ZXBpY2tlciIsInNldFNob3dEYXRlcGlja2VyIiwiZmlsdGVyTnVtQWN0aXZlIiwic2V0RmlsdGVyTnVtQWN0aXZlIiwiZmlsdGVyUmVmIiwiaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIk1BUkdJTl9SSUdIVF9XSVRIX0JBREdFIiwiQUREX0ZJTFRFUl9OVU1CRVIiLCJjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzIiwiY291bnQiLCJ0cmltIiwidG9nZ2xlIiwiaGFuZGxlRmlsdGVyUmVzZXQiLCJmaWx0ZXJDb250YWluZXIiLCJyZWYiLCJhbGlnbkl0ZW1zIiwicHQiLCJiYWRnZUNvbnRlbnQiLCJtciIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJlbGV2YXRpb24iLCJmaWx0ZXJDaGVja2JveENvbnRhaW5lciIsInZhcmlhbnQiLCJjbGVhbkJ1dHRvbiIsIm1hcFN0YXRlVG9Qcm9wcyIsInByb21vQ29kZSIsInNldFByb21vQ29kZSIsImRlYm91bmNlVGltZXIiLCJERUJPVU5DRV9WQUxVRSIsIm5ld1Byb21vQ29kZSIsImNsZWFyVGltZW91dCIsInBsYWNlaG9sZGVyIiwic3R5bGVkIiwiU2VhcmNoSWNvbiIsIkNsb3NlSWNvbiIsIklucHV0QmFzZSIsIlNlYXJjaENvbnRhaW5lciIsInBvc2l0aW9uIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNob3dDbG9zZSIsInNldFNob3dDbG9zZSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJvbktleURvd24iLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwiaW5wdXRQcm9wcyIsIkltcG9ydEV4cG9ydEljb24iLCJTb3J0Iiwib25Tb3J0Iiwic2hvd1NvcnQiLCJzZXRTaG93U29ydCIsInNvcnRSZWYiLCJoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlIiwic29ydENvbnRhaW5lciIsInNvcnRJY29uIiwic29ydExhYmVsIiwic29ydExpc3RDb250YWluZXIiLCJ0aWNrZXRfdHlwZXMiLCJHcmlkIiwiRmlsdGVycyIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiZm9vdGVyIiwiY2FuY2VsQnRuIiwic2l6ZSIsInNhdmVCdG4iLCJFcnJvckljb24iLCJFcnJvckxhYmVsIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJCYWNrZHJvcCIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJMb2FkZXIiLCJkcmF3ZXIiLCJ1c2VEaXNwYXRjaCIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsIk9ORV9QQUdFX05FWFQiLCJoYXNNb3JlMkZldGNoIiwic2hvdWxkRmV0Y2hEYXRhIiwiTXlPcmRlcnNUaWNrZXRzIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19sYXN0X3BhZ2UiLCJvcmRlcnNfcGVyX3BhZ2UiLCJ0aWNrZXRfcGVyX3BhZ2UiLCJmZXRjaERhdGEiLCJjdXJyZW50X3BhZ2UiLCJteU9yZGVyc1dyYXBwZXIiLCJkYXRhTGVuZ3RoIiwibmV4dCIsImhhc01vcmUiLCJzY3JvbGxUaHJlc2hvbGQiLCJub09yZGVyc0ZvdW5kIiwibm9PcmRlcnNJY29uV3JhcHBlciIsImNhbGN1bGF0ZU9yZGVyVG90YWxzIiwiZm9ybWF0Q3VycmVuY3kiLCJfRnJhZ21lbnQiLCJPcmRlclN1bW1hcnlUYWJsZSIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsInRheGVzVG90YWwiLCJhbW91bnRUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwiZGlzY291bnRfYW1vdW50IiwidGF4ZXNfYW1vdW50Iiwic2hhcGUiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJub3ciLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwiaGFzUmVmdW5kUmVxdWVzdHMiLCJyb2xlIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwicmVmdW5kRGlzYWJsZWQiLCJhcnJheU9mIiwiT3JkZXJTdW1tYXJ5Iiwib3JkZXJTdW1tYXJ5V3JhcHBlciIsInB4Iiwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mbyIsIm1lbWJlclRpY2tldHMiLCJPcmRlckxpc3RUaWNrZXRzIiwiQXNzaWduVG9NZSIsInVzZXJUaWNrZXRzIiwidXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSIsInVzZXJfdGlja2V0c19sYXN0X3BhZ2UiLCJvcmRlclRpY2tldENvbnRhaW5lciIsImFzc2lnbmVkVG9NZVdyYXBwZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRNb2RhbCIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsInNlbGVjdFRvUmVmdW5kIiwiaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0Iiwibm9UaWNrZXRzRm91bmQiLCJUeXBvZ3JhcGh5IiwiQXNzaWduZWRUbyIsIkV4dGVybmFsQXNzaWduZWRUbyIsIk1hbmFnZUZvciIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvd25lcjMiLCJpc1VuYXNzaWduZWQiLCJpc19hY3RpdmUiLCJpc0RlbGVnYXRlZCIsInRpY2tldE93bmVyRW1haWwiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkb3duZXI1IiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwidGlja2V0c1RvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJ0aWNrZXRzX3RvdGFsIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsIlRpY2tldFN0YXR1cyIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRBc3NpZ24iLCJtb2RhbFZpZXdzIiwiZGV0YWlsIiwicmVhc3NpZ24iLCJhc3NpZ24iLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIl90aWNrZXQkdGlja2V0X3R5cGUiLCJfdGlja2V0JGJhZGdlIiwiY2FuUmVhc3NpZ24iLCJtb2RhbE9wZW4iLCJzZXRNb2RhbE9wZW4iLCJyZWFzc2lnbkRhdGUiLCJvblJlYXNzaWduYWJsZVBlcmlvZCIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVPcGVuTW9kYWwiLCJ2aWV3Iiwib3JkZXJXcmFwcGVyIiwicmVmdW5kTW9kYWwiLCJkaXNhYmxlZFJlZnVuZCIsInNlbGVjdGVkIiwiY2hlY2tib3giLCJwbCIsInRpY2tldFRpY2tldFR5cGUiLCJiYWRnZUZlYXR1cmVXcmFwcGVyIiwicHIiLCJiYWRnZSIsImZlYXR1cmVzIiwiYmFkZ2VGZWF0dXJlIiwic3JjIiwiaW1hZ2UiLCJhbHQiLCJ0aWNrZXRObyIsImxnIiwibWluSGVpZ2h0IiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsIlJlZnVuZERldGFpbHMiLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJoaWRkZW4iLCJPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSIsImlzTW9iaWxlIiwiZGV0YWlsc1JlcXVpcmVkIiwic2V0VmFsdWUiLCJfIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInJlZnVuZERldGFpbHNPcGVuIiwic2V0UmVmdW5kRGV0YWlsc09wZW4iLCJ1bnNlbGVjdFJlZnVuZFRpY2tldHMiLCJmaWx0ZXJTZWxlY3RlZCIsInNlbGVjdGVkVGlja2V0IiwiY2xvc2VTdWJtaXRSZXF1ZXN0IiwicmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyIsIm1vcmVEZXRhaWxzIiwiYm9yZGVyQ29sb3IiLCJ0YWJCdXR0b25zIiwibWQiLCJvblJlZnVuZFN1Y2Nlc3NDbG9zZSIsIm9uQ2xvc2VTbGlkZXIiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRGb3JtYXR0ZWREYXRlIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInVzZU1lbW8iLCJSaWdodERyYXdlciIsIlJlZnVuZFJlcXVlc3RlZFRpY2tldCIsImdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMiLCJyZXF1ZXN0ZWRUaWNrZXRzIiwiY2xvc2VTbGlkZXIiLCJyZWZ1bmREZXRhaWxzIiwidG9vbHRpcENsYXNzZXMiLCJJbmZvSWNvbiIsIm1vbWVudCIsIlJlZnVuZFN0YXR1cyIsIkdSSURfOCIsIkdSSURfMTIiLCJQQURESU5HXzIiLCJhcHByb3ZlZFJlZnVuZHMiLCJyZWZ1bmQiLCJyZWZ1bmRlZFRheGVzU3VtbWF0b3J5IiwicmVmdW5kZWRfdGF4ZXMiLCJydCIsInRheElkIiwidGF4IiwidG90YWxSZWZ1bmRlZFRheEFtb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsIkh0bWxUb29sdGlwIiwiY2xhc3NlcyIsInBvcHBlciIsIm1heFdpZHRoIiwiYm9yZGVyIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwicmVmdW5kRGV0YWlsIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJhY3Rpb25fZGF0ZSIsImZvcm1hdCIsIkNoaXAiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiQ2hlY2tDaXJjbGVJY29uIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiRHJhd2VyIiwiQ2xvc2UiLCJhbmNob3IiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0IiwiZ3V0dGVyQm90dG9tIiwib25lT2ZUeXBlIiwiZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSIsIlN1bW1pdEhlYWRlciIsIndpZGdldEhlYWRlciIsInN1bW1pdFRpdGxlRGF0ZSIsInl1cCIsIkRlbGVnYXRlRm9ybSIsImRlbGVnYXRlX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZV9sYXN0X25hbWUiLCJkZWxlZ2F0ZV9lbWFpbCIsInJlc2V0Rm9ybSIsImhhbmRsZUNhbmNlbCIsIkFzc2lnbkhlYWRlciIsImluUHJvZ3Jlc3MiLCJ1c2VyRW1haWwiLCJhc3NpZ25lZFRvWW91IiwiZ2V0U2Vjb25kYXJ5VGl0bGUiLCJnZXRIZWFkZXJOb3RlIiwicHVyY2hhc2VkQnlXcmFwcGVyIiwicHVyY2hhc2VkQnkiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJoZWFkZXJOb3RlIiwiUmVhc3NpZ25IZWFkZXIiLCJhbGxvd3NEZWxlZ2F0ZSIsIlJlYXNzaWduRm9ybSIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJtdWx0aWxpbmUiLCJtaW5Sb3dzIiwidXNlR2V0VGlja2V0Iiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsImFzc2lnbk9wdGlvbiIsInNldEFzc2lnbk9wdGlvbiIsImFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsInNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsImlzQXNzaWduZWRUb01lIiwib25Bc3NpZ24iLCJvbkRlbGVnYXRlIiwib25DbG9zZUVRRm9ybSIsIm9uQ2xvc2VTYXZlTWVzc2FnZSIsIm9uU2F2ZUVRIiwiZGVzY3JpcHRpb24iLCJyZXNvbHZlIiwiSGVhZGVyIiwidGlja2V0UmVhc3NpZ25Db250YWluZXIiLCJhc3NpZ25PcHRpb25zV3JhcHBlciIsIm15IiwiQXV0b2NvbXBsZXRlIiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJzdW1taXRJZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJzZXRGaWVsZFRvdWNoZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInJlbmRlcklucHV0IiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJUaWNrZXRPd25lckZpZWxkcyIsIlRpY2tldEZvcm0iLCJjYW5FZGl0IiwicmVkdWNlIiwiYWRkaXRpb25hbERldGFpbHMiLCJpbmZvTm90ZSIsIlFSQ29kZSIsIkZpbGVEb3dubG9hZE91dGxpbmVkIiwiRG93bmxvYWRJY29uIiwiRW1haWxPdXRsaW5lZCIsIkVtYWlsSWNvbiIsIlRXT19JVEVNIiwiX3RpY2tldCRvcmRlcjMiLCJzZW50Q29uZmlybWF0aW9uIiwic2V0U2VudENvbmZpcm1hdGlvbiIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwiaXNDb21wbGV0ZSIsIm9uU2F2ZSIsImRvd25sb2FkVGlja2V0UGRmIiwib25TZW5kRW1haWwiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJxckNvZGUiLCJxcl9jb2RlIiwidmlld0JveCIsInFyTm90ZSIsImlzX3ZpcnR1YWwiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwicmVmdW5kUmVxdWVzdHMiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWQiLCJidXR0b25JbmNvbXBsZXRlIiwiYnV0dG9uVW5hc3NpZ25lZCIsImJ1dHRvbkNvbXBsZXRlIiwiYnV0dG9uQ2FuY2VsbGVkIiwiQXNzaWduZWRUb01lIiwiV2lkZ2V0VGFicyIsInRhYiIsInNldFRhYiIsImhhbmRsZVRhYkNoYW5nZSIsIm5ld1RhYiIsInRhYldyYXBwZXIiLCJXaWRnZXRXcmFwcGVyIiwibWVzc2FnZUNhbGxiYWNrIiwibG9hZGluZyIsImFwaUVycm9yIiwicmVzZXRBcGlFcnJvciIsImZpbHRlclZhbHVlIiwic29ydFZhbHVlIiwidGlja2V0c1RpdGxlVGV4dCIsIlByb3ZpZGVyIiwicnVuIiwiY3VycmVudFRpY2tldCIsInNtb290aFNjcm9sbFRvIiwidGFyZ2V0U2Nyb2xsVG9wIiwiZHVyYXRpb24iLCJzdGFydFNjcm9sbFRvcCIsInNjcm9sbFRvcCIsImRpc3RhbmNlIiwic3RhcnRUaW1lIiwiYW5pbWF0aW9uU3RlcCIsInRpbWVzdGFtcCIsImVsYXBzZWQiLCJwcm9ncmVzcyIsIk1hdGgiLCJtaW4iLCJlYXNlSW5PdXRRdWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVySWQiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c190b19kZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJhbGxvd3NfdG9fcmVhc3NpZ24iLCJpbml0UmVhY3RJMThuZXh0IiwiTGFuZ3VhZ2VEZXRlY3RvciIsImVuIiwiZXMiLCJ1c2UiLCJpbml0IiwiZmFsbGJhY2tMbmciLCJkZWJ1ZyIsInJlc291cmNlcyIsInRyYW5zbGF0aW9uIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiTE9HT1VUX1VTRVIiLCJTVEFSVF9MT0FESU5HIiwiU1RPUF9MT0FESU5HIiwiUkVTRVRfTE9BRElORyIsImhhc0xvYWRlZEFsbERhdGEiLCJERUZBVUxUX0ZJTFRFUl9TVEFURSIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwiY3VycmVudF90YWIiLCJpc09yZGVyTG9hZGluZyIsIm9yZGVyc190b3RhbCIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3RvdGFsIiwidXNlcl90aWNrZXRzX3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsInRvdGFsIiwibGFzdF9wYWdlIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwidXBkYXRlZE9yZGVyIiwidGlja2V0c19wYWdlX2xhc3QiLCJtbyIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidGlja2V0RGF0YSIsIm5ld09yZGVycyIsIm5ld1RpY2tldHMiLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiYW1vdW50IiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsImN1cnJlbmN5T2JqZWN0IiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJwdXJjaGFzZVRvdGFsIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0T3JkZXJUaWNrZXRzIiwiX29yZGVycyQiLCJvcmRlcnMiLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJ0cyIsInNldEhvdXJzIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwicm91bmQiLCJEYXRlIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsInJlcXVlc3RlZFBhZ2UiLCJjdXJyZW50UGFnZSIsImxhc3RQYWdlIiwiaXNTYW1lUGFnZSIsImlzTGFzdFBhZ2UiLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJ1c2VTdW1taXREZXRhaWxzIiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsImlzU3RhcnRlZCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImZlYXR1cmUiLCJnZXRUaWNrZXRUeXBlIiwiZmluYWxfYW1vdW50IiwibmV0X3NlbGxpbmdfY29zdCIsInJyIiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMiIsImFsbFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczUiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczYiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM3IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzOCIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsImluY2x1ZGVBdHRlbmRlZUluZm8iLCJpbmNsdWRlRGlzY2xhaW1lciIsIm9ubHlSZWxldmFudCIsInN1YlF1ZXN0aW9uU2x1ZyIsInN1YkFuc3dlciIsIm1hdGNoIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsImxhenkiLCJ0eXBlRXJyb3IiLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMyIiwic3ViUXVlc3Rpb24iLCJudWxsYWJsZSIsIndoZW4iLCJpcyIsInF1ZXN0aW9uQW5zIiwic2NoIiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJmbHVzaCIsImhhcyIsIm9uQmVmb3JlTGlmdCJdLCJzb3VyY2VSb290IjoiIn0=
9614
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7Ozs7Ozs7O0FDSmhFO0FBQ0E7QUFDbUM7Ozs7Ozs7Ozs7O0FDRm5DOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDeUM7QUFDTjtBQUNJO0FBQ3VCO0FBQ1Q7QUFDZDtBQUNrQjtBQUVGO0FBQUE7QUFFdkQsTUFBTW9CLHVCQUF1QixHQUFJMWYsS0FBSyxJQUFLO0VBQ3pDLE1BQU07SUFDSm9XLFFBQVE7SUFDUnVKLFlBQVk7SUFDWi9zQyxNQUFNO0lBQ055RCxVQUFVO0lBQ1Z4RCxJQUFJO0lBQ0pzakMsUUFBUTtJQUNSeDdCO0VBQ0YsQ0FBQyxHQUFHcWxCLEtBQUs7RUFFVCxNQUFNO0lBQUVzVyxLQUFLO0lBQUVXO0VBQVUsQ0FBQyxHQUFHRixvREFBWSxDQUFDO0lBQ3hDWCxRQUFRO0lBQ1J1SixZQUFZO0lBQ1ovc0MsTUFBTTtJQUNOQyxJQUFJO0lBQ0p3RCxVQUFVO0lBQ1Y4L0IsUUFBUTtJQUNSeDdCO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTWlsQyxnQkFBZ0IsR0FBR0EsQ0FBQSxLQUFNO0lBQzdCLE1BQU1qcEMsTUFBTSxHQUFHLElBQUlrcEMsZUFBZSxDQUFDcGlDLE1BQU0sQ0FBQ3crQixRQUFRLENBQUM2RCxNQUFNLENBQUM7SUFDMUQsTUFBTUMsS0FBSyxHQUFHcHBDLE1BQU0sQ0FBQ3FwQyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3RDLElBQUlELEtBQUssRUFBRXpKLEtBQUssQ0FBQy9qQyxRQUFRLENBQUM7TUFBRTZYLElBQUksRUFBRXZhLGlEQUFXO01BQUUyRSxPQUFPLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDakUsQ0FBQztFQUVEdVosZ0RBQVMsQ0FBQyxNQUFNO0lBQ2R1b0IsS0FBSyxDQUFDL2pDLFFBQVEsQ0FBQ0kseURBQWUsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUMvQyxDQUFDLEVBQUUsQ0FBQ0QsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUVsQixvQkFDRStMLHNEQUFBLENBQUNteEIsaURBQVE7SUFBQ3VHLEtBQUssRUFBRUEsS0FBTTtJQUFBMzJCLFFBQUEsZUFDckJmLHNEQUFBLENBQUM2Z0Msd0VBQVc7TUFDVlEsWUFBWSxFQUFFTCxnQkFBaUI7TUFDL0JuUSxPQUFPLEVBQUUsSUFBSztNQUNkd0gsU0FBUyxFQUFFQSxTQUFVO01BQUF0M0IsUUFBQSxlQUVyQmYsc0RBQUEsQ0FBQytsQiwrREFBb0I7UUFBQzRCLFdBQVc7UUFBQTVtQixRQUFBLGVBQy9CZixzREFBQSxDQUFDMndCLGlFQUFhLElBQUU7TUFBQyxDQUNHO0lBQUMsQ0FDWjtFQUFDLENBQ04sQ0FBQztBQUVmLENBQUM7QUFFRG1RLHVCQUF1QixDQUFDdi9CLFNBQVMsR0FBRztFQUNsQ2kyQixRQUFRLEVBQUVuNEIsMERBQWdCO0VBQzFCMGhDLFlBQVksRUFBRTFoQywwREFBZ0I7RUFDOUJyTCxNQUFNLEVBQUVxTCwwREFBZ0I7RUFDeEI1SCxVQUFVLEVBQUU0SCwwREFBZ0I7RUFDNUJwTCxJQUFJLEVBQUVvTCwwREFBZ0I7RUFDdEJrNEIsUUFBUSxFQUFFbDRCLDBEQUFnQjtFQUMxQnRELGFBQWEsRUFBRXNELHdEQUFjcUM7QUFDL0IsQ0FBQztBQUVELGlFQUFlby9CLHVCQUF1QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Bc3NpZ25FUUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbVRoZW1lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0Fzc2lnbmVkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQmFkZ2VGZWF0dXJlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRnJlZVBhaWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Qcm9tb0NvZGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU3RhdHVzRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvVGlja2V0VHlwZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0VGFicy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VHZXRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9zdW1taXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvdGlja2V0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGNyZWF0ZUFjdGlvbixcbiAgZGVsZXRlUmVxdWVzdCxcbiAgZ2V0UmVxdWVzdCxcbiAgcHV0UmVxdWVzdCxcbiAgc3RhcnRMb2FkaW5nLFxuICBzdG9wTG9hZGluZ1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IHsgb2JqZWN0VG9RdWVyeVN0cmluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEVSUk9SX0NPREVTLFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVCxcbiAgVEFCU1xufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfQVBJX0VSUk9SID0gXCJSRVNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BUElfRVJST1IgPSBcIlNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfRklMVEVSID0gXCJDSEFOR0VfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX1NPUlQgPSBcIkNIQU5HRV9TT1JUXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9NWV9BU1NJR05FRF9USUNLRVRTID0gXCJHRVRfTVlfQVNTSUdORURfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgREVMRUdBVEVfVElDS0VUID0gXCJERUxFR0FURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0VGlja2V0ID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEVycm9yID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9BUElfRVJST1IpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgPSBcIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgPSBcIkZJTFRFUl9WQVJfVElDS0VUX1RZUEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCA9IFwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyA9IFwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1BST01PQ09ERSA9IFwiRklMVEVSX1ZBUl9QUk9NT0NPREVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0ZSRUVfUEFJRCA9IFwiRklMVEVSX1ZBUl9GUkVFX1BBSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSIC8gU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgY2hhbmdlRmlsdGVyID0gKGZpbHRlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfRklMVEVSKShmaWx0ZXIpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGFuZ2VTb3J0ID0gKHNvcnQpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX1NPUlQpKHNvcnQpKTtcbn07XG5cbi8vIEZJTFRFUi9TT1JUIFBBUlNFXG5jb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmosIGN1cnJlbnRUYWIpID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYGNyZWF0ZWRbXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19iYWRnZV9mZWF0dXJlc19pZFwiXG4gICAgICAgIDogXCJiYWRnZV9mZWF0dXJlc19pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX3R5cGVfaWRcIiA6IFwidGlja2V0X3R5cGVfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19hc3NpZ25lZF90b1wiIDogXCJhc3NpZ25lZF90b1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRH1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19vd25lcl9zdGF0dXNcIiA6IFwib3duZXJfc3RhdHVzXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID0gY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcImFtb3VudFwiIDogXCJmaW5hbF9hbW91bnRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQgPT09IFwiRnJlZVwiID8gXCI9PTBcIiA6IFwiPjBcIn1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19wcm9tb19jb2RlXCIgOiBcInByb21vX2NvZGVcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREV9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGBudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWApO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5jb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT4gKGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCIpO1xuXG4vLyBwYXlsb2FkOiB7IGh0dHBDb2RlLCB0aXRsZSwgaHRtbDogY29udGVudCwgdHlwZSB9XG5jb25zdCBlcnJvckhhbmRsZXJOb3RpZnkgPSAocGF5bG9hZCwgY2FsbGJhY2spID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FQSV9FUlJPUikocGF5bG9hZCkpO1xuICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG59O1xuXG5jb25zdCBjdXN0b21BdXRoRXJyb3JIYW5kbGVyID0gKGVyciwgcmVzKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goYXV0aEVycm9ySGFuZGxlcihlcnIsIHJlcywgZXJyb3JIYW5kbGVyTm90aWZ5KSk7XG59O1xuXG5jb25zdCBjdXN0b21GZXRjaEVycm9ySGFuZGxlciA9IChyZXNwb25zZSkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG4gIGxldCBtc2c7XG4gIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAzXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnVzZXJfbm90X2F1dGh6XCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwMVwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXNzaW9uX2V4cGlyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDEyXCJdOlxuICAgICAgbXNnID0gXCJcIjtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oa2V5KSkge1xuICAgICAgICAgIG1zZyA9IGAke21zZ30gJHtrZXl9OiBgO1xuICAgICAgICB9XG5cbiAgICAgICAgbXNnID0gYCR7bXNnfSAke3ZhbHVlfSA8YnI+YDtcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjUwMFwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXJ2ZXJfZXJyb3JcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbXNnID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BhdGNoKGVycm9ySGFuZGxlck5vdGlmeSh7IHRpdGxlOiBpMThuLnQoXCJlcnJvcnMuZXJyb3JcIiksIGh0bWw6IG1zZyB9KSk7XG59O1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLk9SREVSUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyLFxuICAgICAgeyBmaWx0ZXIsIHNvcnQgfVxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCwgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBcIm9yZGVyLmlkXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2ZpcnN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfbGFzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2VtYWlsXCIsXG4gICAgICBcIm93bmVyLmlkXCIsXG4gICAgICBcIm93bmVyLmVtYWlsXCIsXG4gICAgICBcIm93bmVyLmZpcnN0X25hbWVcIixcbiAgICAgIFwib3duZXIubGFzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLnN0YXR1c1wiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCIsIGBvcmRlcl9vd25lcl9pZDw+JHt1c2VyUHJvZmlsZS5pZH1gXSxcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7XG4gICAgb3JkZXJJZCxcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMudGF4LG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCksXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBpZFRva2VuID0gZ2V0SWRUb2tlbigpO1xuICAgIGxldCBjb21wYW55ID0gXCJcIjtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmVyaWZpZXIgPSBuZXcgSWRUb2tlblZlcmlmaWVyKCk7XG4gICAgICAgIGNvbnN0IGp3dCA9IHZlcmlmaWVyLmRlY29kZShpZFRva2VuKTtcbiAgICAgICAgY29tcGFueSA9IGp3dC5wYXlsb2FkLmNvbXBhbnk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSBub3JtYWxpemVUaWNrZXQoYW5zd2Vycyk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBub3JtYWxpemVkRW50aXR5LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gocmVmcmVzaFByb2ZpbGUoYW5zd2VycywgY29tcGFueSwgdGlja2V0Lm93bmVyKSk7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGFzc2lnbkF0dGVuZGVlID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBhdHRlbmRlZV9lbWFpbCwgbWVzc2FnZSA9IG51bGwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7IGF0dGVuZGVlX2VtYWlsIH07XG4gICAgaWYgKG1lc3NhZ2UpIHBheWxvYWQubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEFTU0lHTl9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWFzc2lnblRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIG93bmVyLmV4dHJhX3F1ZXN0aW9ucywgb3JkZXIuc3VtbWl0XCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFTU9WRV9USUNLRVRfQVRURU5ERUUpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKVxuICAgICk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lOiBmaXJzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWU6IGxhc3ROYW1lLFxuICAgICAgYXR0ZW5kZWVfZW1haWw6IGVtYWlsXG4gICAgfTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oREVMRUdBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2RlbGVnYXRlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZUV4dHJhUXVlc3Rpb25zID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0UERGID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG9iamVjdFRvUXVlcnlTdHJpbmcocGFyYW1zKTtcbiAgICBjb25zdCBhcGlVcmwgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcGRmPyR7cXVlcnlTdHJpbmd9YDtcblxuICAgIHJldHVybiBmZXRjaChhcGlVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJCbG9iXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vcGRmXCIgfVxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigocGRmKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHBkZik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IFwidGlja2V0LnBkZlwiO1xuICAgICAgICBsaW5rLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyKTtcbiAgfTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCB7IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSwgcGFyc2VBbnN3ZXJzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IEFzc2lnbkVRRm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKHRpY2tldC5vd25lciwgZXh0cmFRdWVzdGlvbnMsIHt9LCBmYWxzZSwgdHJ1ZSksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBmYWxzZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwicmVhc3NpZ25EcmF3ZXJcIik7XG5cbiAgaWYgKGV4dHJhUXVlc3Rpb25zPy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8Qm94PlxuICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHMgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfSBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRVFGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25FUUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IGRlZmF1bHRDb250ZXh0VmFsdWUgPSB7XG4gIHNldE1lc3NhZ2U6ICgpID0+IHt9LFxuICBzZXRNZXNzYWdlQ2FsbGJhY2s6ICgpID0+IHt9XG59O1xuXG5jb25zdCBDdXN0b21EaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dFZhbHVlKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHQsXG4gIERpYWxvZ1RpdGxlXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IEN1c3RvbURpYWxvZyA9ICh7IG9wZW4sIG9uQ2xvc2UsIHRpdGxlLCBib2R5IH0pID0+IChcbiAgPERpYWxvZ1xuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICA+XG4gICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQ29udGVudFRleHRcbiAgICAgICAgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGJvZHkgfX1cbiAgICAgIC8+XG4gICAgPC9EaWFsb2dDb250ZW50PlxuICA8L0RpYWxvZz5cbik7XG5cbkN1c3RvbURpYWxvZy5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGJvZHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCJcbiAgICB9XG4gIH0sXG4gIHR5cG9ncmFwaHk6IHtcbiAgICBib2R5MToge1xuICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBtYXJnaW49XCJub3JtYWxcIiBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQsIGNoaWxkcmVuKSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIGlmICghcnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZS50b1N0cmluZygpXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT5cbiAgICBjaGVja1Zpc2liaWxpdHkoXG4gICAgICBydWxlLFxuICAgICAgY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKVxuICAgICk7XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBBc3NpZ25lZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiTWVcIiwgbGFiZWw6IFwiTWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiU29tZW9uZUVsc2VcIiwgbGFiZWw6IFwiU29tZW9uZSBFbHNlXCIgfSxcbiAgICB7IHZhbHVlOiBcIk5vYm9keVwiLCBsYWJlbDogXCJOb2JvZHlcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQXNzaWduZWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduZWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbmVkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyBiYWRnZV9mZWF0dXJlc190eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQmFkZ2UgRmVhdHVyZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YmFkZ2VfZmVhdHVyZXNfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5CYWRnZUZlYXR1cmVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhZGdlRmVhdHVyZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIEJ1dHRvbixcbiAgQ2FyZCxcbiAgQ2FyZEhlYWRlcixcbiAgRGl2aWRlcixcbiAgUGFwZXJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVGaWx0ZXIgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlRmlsdGVyXCI7XG5pbXBvcnQge1xuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGlja2V0VHlwZUZpbHRlciBmcm9tIFwiLi9UaWNrZXRUeXBlRmlsdGVyXCI7XG5pbXBvcnQgQXNzaWduZWRGaWx0ZXIgZnJvbSBcIi4vQXNzaWduZWRGaWx0ZXJcIjtcbmltcG9ydCBTdGF0dXNGaWx0ZXIgZnJvbSBcIi4vU3RhdHVzRmlsdGVyXCI7XG5pbXBvcnQgRnJlZVBhaWRGaWx0ZXIgZnJvbSBcIi4vRnJlZVBhaWRGaWx0ZXJcIjtcbmltcG9ydCBQcm9tb0NvZGVGaWx0ZXIgZnJvbSBcIi4vUHJvbW9Db2RlRmlsdGVyXCI7XG5cbmNvbnN0IEZpbHRlciA9ICh7IG9uRmlsdGVyLCBvblJlc2V0LCBmaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA9IDE7XG4gIGNvbnN0IEFERF9GSUxURVJfTlVNQkVSID0gMTtcblxuICBjb25zdCBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFssIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvdW50ICs9IHZhbHVlLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gMCkge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY291bnQ7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhmaWx0ZXIpKTtcbiAgfSwgW2ZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RmlsdGVyTnVtQWN0aXZlKDApO1xuICAgIG9uUmVzZXQoKTtcbiAgICB0b2dnbGUoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxCYWRnZVxuICAgICAgICAgIGJhZGdlQ29udGVudD17ZmlsdGVyTnVtQWN0aXZlfVxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc3g9e3sgbXI6IGZpbHRlck51bUFjdGl2ZSA+IDAgPyBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA6IFwiXCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0ZpbHRlckxpc3QgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8UGFwZXIgZWxldmF0aW9uPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDaGVja2JveENvbnRhaW5lcn0+XG4gICAgICAgICAgPENhcmQgdmFyaWFudD1cIm91dGxpbmVkXCI+XG4gICAgICAgICAgICA8Q2FyZEhlYWRlclxuICAgICAgICAgICAgICB0aXRsZT1cIkZpbHRlcnNcIlxuICAgICAgICAgICAgICBhY3Rpb249e1xuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbHRlclJlc2V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xlYW5CdXR0b259XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJmaWx0ZXIuY2xlYXJcIil9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RGl2aWRlciAvPlxuICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QXNzaWduZWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8U3RhdHVzRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFRpY2tldFR5cGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxQcm9tb0NvZGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9QUk9NT0NPREVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RnJlZVBhaWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9GUkVFX1BBSURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShGaWx0ZXIpO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0ZSRUVfUEFJRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEZyZWVQYWlkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJGcmVlXCIsIGxhYmVsOiBcIkZyZWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiUGFpZFwiLCBsYWJlbDogXCJQYWlkXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkZyZWUgLyBQYWlkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZyZWVQYWlkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGcmVlUGFpZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBUZXh0RmllbGRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1BST01PQ09ERSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFByb21vQ29kZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1BST01PQ09ERTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuICBjb25zdCBbcHJvbW9Db2RlLCBzZXRQcm9tb0NvZGVdID0gdXNlU3RhdGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuXG4gIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IERFQk9VTkNFX1ZBTFVFID0gNTAwO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UHJvbW9Db2RlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldikgPT4ge1xuICAgIGNvbnN0IG5ld1Byb21vQ29kZSA9IGV2LnRhcmdldC52YWx1ZTtcbiAgICAvLyB1cGRhdGUgbG9jYWwgc3RhdGUgc28gdGhlIGlucHV0IHJlZmxlY3RzIGNoYW5nZXNcbiAgICBzZXRQcm9tb0NvZGUobmV3UHJvbW9Db2RlKTtcblxuICAgIC8vIHJlbW92ZSBjdXJyZW50IGRlYm91bmNlXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuXG4gICAgLy8gZGVib3VuY2Ugc2V0IHRvIDUwMCBtc1xuICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb25GaWx0ZXIoe1xuICAgICAgICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBuZXdQcm9tb0NvZGVcbiAgICAgIH0pO1xuICAgIH0sIERFQk9VTkNFX1ZBTFVFKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIHJlbW92ZSBkZWJvdW5jZSBvbiByZWxvYWRcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlByb21vIENvZGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHB5OiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByb21vIGNvZGVcIlxuICAgICAgICAgICAgdmFsdWU9e3Byb21vQ29kZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAvPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblByb21vQ29kZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbW9Db2RlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuY29uc3QgU2VhcmNoID0gKHsgb25TZWFyY2ggfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q2xvc2UsIHNldFNob3dDbG9zZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBvblNlYXJjaCh7XG4gICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiXG4gICAgfSk7XG4gICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2UgJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgUGFwZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFNvcnQgPSAoeyBvblNvcnQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPFBhcGVyXG4gICAgICAgICAgZWxldmF0aW9uPXs4fVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImRlc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJhc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFN0YXR1c0ZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUzogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiSW5jb21wbGV0ZVwiLCBsYWJlbDogXCJJbmNvbXBsZXRlXCIgfSxcbiAgICB7IHZhbHVlOiBcIkNvbXBsZXRlXCIsIGxhYmVsOiBcIkNvbXBsZXRlXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlN0YXR1c1wiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TdGF0dXNGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXR1c0ZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgVGlja2V0VHlwZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyB0aWNrZXRfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiVGlja2V0IFR5cGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3RpY2tldF90eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldFR5cGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFR5cGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGaWx0ZXJzID0gKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkgPT4gKFxuICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgIDxHcmlkXG4gICAgICBpdGVtXG4gICAgICB4cz17Nn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgcGFkZGluZz17MX1cbiAgICAgIGdhcD17Mn1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICA+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IC8+XG4gICAgPC9HcmlkPlxuICA8L0dyaWQ+XG4pO1xuXG5GaWx0ZXJzLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZvcm1Gb290ZXIgPSAoeyBzYXZlTGFiZWwsIGNhbmNlbExhYmVsLCBvbkNsb3NlLCBkaXNhYmxlZCB9KSA9PiAoXG4gIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZm9vdGVyfT5cbiAgICA8QnV0dG9uXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtjYW5jZWxMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnNhdmVCdG59XG4gICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtzYXZlTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gIDwvQm94PlxuKTtcblxuRm9ybUZvb3Rlci5wcm9wVHlwZXMgPSB7XG4gIHNhdmVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2FuY2VsTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1Gb290ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEVycm9yTGFiZWwoeyBtZXNzYWdlLCBjb2xvciwgY2xhc3NOYW1lcywgZGF0YVRlc3RJZCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmVycm9yTGFiZWx9ICR7Y2xhc3NOYW1lcyAmJiBjbGFzc05hbWVzfWB9XG4gICAgICBzdHlsZT17eyBjb2xvciB9fVxuICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgPlxuICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvciB9fSAvPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckxhYmVsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQmFja2Ryb3AsIENpcmN1bGFyUHJvZ3Jlc3MgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBMb2FkZXIgPSAoeyBvcGVuIH0pID0+IChcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgPEJhY2tkcm9wIG9wZW49e29wZW59IHN4PXsodGhlbWUpID0+ICh7IHpJbmRleDogdGhlbWUuekluZGV4LmRyYXdlciArIDEgfSl9PlxuICAgIDxDaXJjdWxhclByb2dyZXNzIGNvbG9yPVwiaW5oZXJpdFwiIC8+XG4gIDwvQmFja2Ryb3A+XG4pO1xuXG5Mb2FkZXIucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTG9hZGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4uL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyLCBnZXRVc2VyT3JkZXJzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQsIEZJUlNUX1BBR0UgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBoYXNNb3JlMkZldGNoLCBzaG91bGRGZXRjaERhdGEgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIG1lbWJlck9yZGVycyxcbiAgICBvcmRlcnNfY3VycmVudF9wYWdlLFxuICAgIG9yZGVyc19sYXN0X3BhZ2UsXG4gICAgb3JkZXJzX3Blcl9wYWdlLFxuICAgIHRpY2tldF9wZXJfcGFnZSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBmZXRjaERhdGEgPSBhc3luYyAocGFnZSkgPT4ge1xuICAgIGlmIChzaG91bGRGZXRjaERhdGEocGFnZSwgb3JkZXJzX2N1cnJlbnRfcGFnZSwgb3JkZXJzX2xhc3RfcGFnZSkpXG4gICAgICBkaXNwYXRjaChcbiAgICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgICAgcGFnZSxcbiAgICAgICAgICBwZXJQYWdlOiBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHNvcnRcbiAgICAgICAgfSlcbiAgICAgICkudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICAgIGRhdGEuZm9yRWFjaCgob3JkZXIpID0+IHtcbiAgICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogRklSU1RfUEFHRSxcbiAgICAgICAgICAgICAgcGVyUGFnZTogdGlja2V0X3Blcl9wYWdlLFxuICAgICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICAgIHNvcnRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YShGSVJTVF9QQUdFKTtcbiAgfSwgW2ZpbHRlciwgc29ydF0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBpZD1cImluZmluaXRlV3JhcHBlclwiIGNsYXNzTmFtZT17c3R5bGVzLm15T3JkZXJzV3JhcHBlcn0+XG4gICAgICB7XCIgXCJ9XG4gICAgICB7bWVtYmVyT3JkZXJzPy5sZW5ndGggPyAoXG4gICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgIGRhdGFMZW5ndGg9e21lbWJlck9yZGVycz8ubGVuZ3RofVxuICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YShvcmRlcnNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZTJGZXRjaChvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlKX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ljb25XcmFwcGVyfT5cbiAgICAgICAgICAgIDxTZWFyY2hJY29uIHN4PXt7IGZvbnRTaXplOiA0NCwgY29sb3I6IFwiIzAwMDAwMDhGXCIgfX0gLz5cbiAgICAgICAgICAgIDxDbG9zZUljb25cbiAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMTgsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiIzAwMDAwMDhGXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAge3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfVxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeVRhYmxlID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0IH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5PcmRlclN1bW1hcnlUYWJsZS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2NvdW50X2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0YXhlc19hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeVRhYmxlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgdGlja2V0c1JlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kRW1haWxTdXBwb3J0ID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShpc0luUmVmdW5kYWJsZVBlcmlvZCAmJiBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCk7XG4gIGNvbnN0IGhhc1JlZnVuZFJlcXVlc3RzID0gdGlja2V0cz8uc29tZSgodCkgPT4gdC5yZWZ1bmRfcmVxdWVzdHMubGVuZ3RoID4gMCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufSBcbiAgICAgICAgICAke3N1Ym1pdFJlcXVlc3QgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWQgOiBcIlwifWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIHtoYXNSZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIGRldGFpbHMgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cImVtYWlsIHN1cHBvcnQgYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25FbWFpbFN1cHBvcnRDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9pbmZvLmVtYWlsX3N1cHBvcnRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZEVtYWlsU3VwcG9ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBSZWZ1bmRFbWFpbFN1cHBvcnQgZnJvbSBcIi4vUmVmdW5kRW1haWxTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeSA9ICh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9XG4gICAgICAgIHN4PXt7IHB0OiA0LCBweDogNCB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlIG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59O1xuT3JkZXJTdW1tYXJ5LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCB7IGdldFVzZXJUaWNrZXRzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7XG4gIE9ORV9QQUdFX05FWFQsXG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEZJUlNUX1BBR0Vcbn0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgaGFzTW9yZTJGZXRjaCwgc2hvdWxkRmV0Y2hEYXRhIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbmNvbnN0IEFzc2lnblRvTWUgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyVGlja2V0cyxcbiAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2UsXG4gICAgZmlsdGVyLFxuICAgIHNvcnRcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICBjb25zdCBmZXRjaERhdGEgPSBhc3luYyAocGFnZSkgPT4ge1xuICAgIGlmIChcbiAgICAgIHNob3VsZEZldGNoRGF0YShwYWdlLCB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLCB1c2VyX3RpY2tldHNfbGFzdF9wYWdlKVxuICAgIClcbiAgICAgIGRpc3BhdGNoKFxuICAgICAgICBnZXRVc2VyVGlja2V0cyh7IHBhZ2UsIHBlclBhZ2U6IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsIGZpbHRlciwgc29ydCB9KVxuICAgICAgKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YShGSVJTVF9QQUdFKTtcbiAgfSwgW2ZpbHRlciwgc29ydF0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0+XG4gICAgICA8ZGl2IGlkPVwiYXNzaWduZWRUb01lV3JhcHBlclwiIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkVG9NZVdyYXBwZXJ9PlxuICAgICAgICB7dXNlclRpY2tldHM/Lmxlbmd0aCA/IChcbiAgICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICAgIGRhdGFMZW5ndGg9e3VzZXJUaWNrZXRzPy5sZW5ndGh9XG4gICAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEodXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgICAgaGFzTW9yZT17aGFzTW9yZTJGZXRjaChcbiAgICAgICAgICAgICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSxcbiAgICAgICAgICAgICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZVxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgICAgICAgICB7dXNlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9UaWNrZXRzRm91bmR9PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ljb25XcmFwcGVyfT5cbiAgICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA4RlwiXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRzLm5vX3RpY2tldHNcIil9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnblRvTWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25lZFRvID0gKHsgZW1haWwgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLWFzc2lnbmVkXCI+XG4gICAgICAgIHtlbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEV4dGVybmFsQXNzaWduZWRUbyA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX2J5XCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBNYW5hZ2VGb3IgPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5tYW5hZ2VfZm9yXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBBdHRlbmRlZVN0YXR1cyA9ICh7IHRpY2tldCwgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSAhdGlja2V0Lm93bmVyPy5lbWFpbCAmJiB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCBpc0RlbGVnYXRlZCA9ICEhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtdW5hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHRpY2tldC5vd25lcj8uZW1haWwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxBc3NpZ25lZFRvIGVtYWlsPXt0aWNrZXQub3duZXIuZW1haWx9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8RXh0ZXJuYWxBc3NpZ25lZFRvXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxNYW5hZ2VGb3JcbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3duZXI/LmZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3duZXI/Lmxhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbkF0dGVuZGVlU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdHRlbmRlZVN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgaWYgKCFvcmRlcj8ubWVtYmVyVGlja2V0cz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc2xpY2VkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5zbGljZSgwLCBpdGVtc1RvRGlzcGxheSk7XG5cbiAgY29uc3Qgb25WaWV3TW9yZSA9ICgpID0+IHtcbiAgICBpZiAob3JkZXI/LnRpY2tldHNfdG90YWwgPiBvcmRlcj8ubWVtYmVyVGlja2V0cy5sZW5ndGgpIHtcbiAgICAgIG9uUGFnaW5hdGVDbGljaygpO1xuICAgIH1cbiAgICBzZXRJdGVtc1RvRGlzcGxheShpdGVtc1RvRGlzcGxheSArIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH07XG5cbiAgY29uc3Qgb25WaWV3TGVzcyA9ICgpID0+IHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NsaWNlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXshIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgICAge29yZGVyPy50aWNrZXRzX3RvdGFsID4gaXRlbXNUb0Rpc3BsYXkgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBtb3JlIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TW9yZX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19tb3JlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubGVuZ3RoID4gUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UICYmXG4gICAgICBzbGljZWRUaWNrZXRzPy5sZW5ndGggPT09IG9yZGVyPy50aWNrZXRzX3RvdGFsID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbGVzcyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld0xlc3N9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFRpY2tldERldGFpbCBmcm9tIFwiLi4vVGlja2V0RGV0YWlsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCBUaWNrZXRBc3NpZ24gZnJvbSBcIi4uL1RpY2tldEFzc2lnblwiO1xuaW1wb3J0IHsgcmVzZXRUaWNrZXQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2tcbiAgICAgIHN4PXt7XG4gICAgICAgIGp1c3RpZnlDb250ZW50OiBcImVuZFwiLFxuICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgIH19XG4gICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5UaWNrZXRDVEFzLnByb3BUeXBlcyA9IHtcbiAgaXNJbmNvbXBsZXRlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1VuYXNzaWduZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzUmVhc3NpZ25hYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbk9wZW5DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBpc1JlZnVuZE1vZGFsLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUsIGNhblJlYXNzaWduIH0gPVxuICAgIHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW21vZGFsT3Blbiwgc2V0TW9kYWxPcGVuXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3Qgb25SZWFzc2lnbmFibGVQZXJpb2QgPSByZWFzc2lnbkRhdGUgPiBub3c7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID1cbiAgICBvblJlYXNzaWduYWJsZVBlcmlvZCAmJiBjYW5SZWFzc2lnbiAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlcldyYXBwZXJ9ICR7XG4gICAgICAgIGlzUmVmdW5kTW9kYWwgPyBzdHlsZXMucmVmdW5kTW9kYWwgOiBcIlwiXG4gICAgICB9ICR7aXNSZWZ1bmRNb2RhbCAmJiAhaXNSZWZ1bmRhYmxlID8gc3R5bGVzLmRpc2FibGVkUmVmdW5kIDogXCJcIn0gJHtcbiAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kID8gc3R5bGVzLnNlbGVjdGVkIDogXCJcIlxuICAgICAgfWB9XG4gICAgPlxuICAgICAge2lzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIHhzPXsxfSBwYWRkaW5nPXsyfSBjbGFzc05hbWU9e3N0eWxlcy5jaGVja2JveH0+XG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHRpY2tldCBjaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZWxlY3RUb1JlZnVuZChlLCB0aWNrZXQpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjoge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1JlZnVuZGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItbGlzdC10aWNrZXRcIlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgeHM9e2lzUmVmdW5kTW9kYWwgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlfVxuICAgICAgICAgICAgICBzcmM9e2JmLmltYWdlfVxuICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIGtleT17YmYubmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogNCwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXNcbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0PXshIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcInRpY2tldF9zdGF0dXMuY29weV90aWNrZXRfbnVtYmVyXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBsZz17Nn1cbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHB5PXsyfSBwcj17NH0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgICAgIG1pbkhlaWdodDogXCIyZW1cIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAhaXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICAgIGlzVW5hc3NpZ25lZD17aXNVbmFzc2lnbmVkfVxuICAgICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGUgJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrPXtoYW5kbGVPcGVuTW9kYWx9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPFRpY2tldERldGFpbFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17bW9kYWxPcGVuID09PSBtb2RhbFZpZXdzLmRldGFpbH1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgICA8VGlja2V0QXNzaWduXG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXtbbW9kYWxWaWV3cy5yZWFzc2lnbiwgbW9kYWxWaWV3cy5hc3NpZ25dLmluY2x1ZGVzKG1vZGFsT3Blbil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG9yZGVyX2lkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBpc1JlZnVuZE1vZGFsOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2VsZWN0VG9SZWZ1bmQ6IFByb3BUeXBlcy5mdW5jLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFRhYnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiO1xuaW1wb3J0IFRhYiBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJcIjtcbmltcG9ydCBPcmRlckxpc3RJdGVtIGZyb20gXCIuL09yZGVyTGlzdEl0ZW1cIjtcbmltcG9ydCBPcmRlclN1bW1hcnkgZnJvbSBcIi4uL09yZGVyU3VtbWFyeVwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RzTW9kYWwgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBSZWZ1bmREZXRhaWxzIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzXCI7XG5cbmNvbnN0IFRhYlBhbmVsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSA9ICh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIG9yZGVyLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgW3RpY2tldHNUb1JlZnVuZCwgc2V0VGlja2V0c1RvUmVmdW5kXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1Ym1pdFJlcXVlc3QsIHNldFN1Ym1pdFJlcXVlc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVmdW5kRGV0YWlsc09wZW4sIHNldFJlZnVuZERldGFpbHNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBvblJlZnVuZENsaWNrID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG4gIH07XG4gIGNvbnN0IHVuc2VsZWN0UmVmdW5kVGlja2V0cyA9ICh0aWNrZXQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IHRpY2tldHNUb1JlZnVuZC5maWx0ZXIoKHQpID0+IHQuaWQgIT09IHRpY2tldC5pZCk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKGZpbHRlclNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0VG9SZWZ1bmQgPSAoZSwgdGlja2V0KSA9PiB7XG4gICAgY29uc3QgeyBjaGVja2VkIH0gPSBlLnRhcmdldDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUaWNrZXQgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAgICAgKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZFxuICAgICAgKTtcbiAgICAgIHNldFRpY2tldHNUb1JlZnVuZChbLi4udGlja2V0c1RvUmVmdW5kLCBzZWxlY3RlZFRpY2tldF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHModGlja2V0KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xvc2VTdWJtaXRSZXF1ZXN0ID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IG1vcmVEZXRhaWxzID0gKCkgPT5cbiAgICBkZXRhaWxzUmVxdWlyZWQgJiYgKFxuICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgbWVzc2FnZT17dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2RldGFpbHNfcmVxdWlyZWRcIil9XG4gICAgICAgIGNvbG9yPVwiI2ZmOTgwMFwiXG4gICAgICAgIGRhdGFUZXN0SWQ9XCJtb3JlLWRldGFpbHMtbGFiZWxcIlxuICAgICAgLz5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGUtb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMudGlja2V0c1wiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnN1bW1hcnlcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgIDwvVGFicz5cbiAgICAgIDwvQm94PlxuICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MH0+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXsxfT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZXNrdG9wLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17MX0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHMgfHwgW119XG4gICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IGNsb3NlU3VibWl0UmVxdWVzdCgpfVxuICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgIC8+XG4gICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRldGFpbHNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUGFnaW5hdGVDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJzTGlzdCA9ICh7IHN1bW1pdCwgb3JkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0aWNrZXRfcGVyX3BhZ2UsIGZpbHRlciwgc29ydCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAxLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXtvcmRlci5udW1iZXJ9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IFwiNXB4IDEwcHhcIiB9fVxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogNCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ISFkZXRhaWxzUmVxdWlyZWR9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCB7IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgUmVmdW5kRGV0YWlscyA9ICh7IHRpY2tldHMsIGN1cnJlbmN5LCBvcGVuLCBvbkNsb3NlU2xpZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCByZXF1ZXN0ZWRUaWNrZXRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzKHRpY2tldHMpLFxuICAgIFt0aWNrZXRzXVxuICApO1xuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD1cInJlZnVuZC1kZXRhaWxzXCJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICA+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcbiAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgIHBhZGRpbmc6IFwiMCA1cmVtXCJcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3JlcXVlc3RlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgY3VycmVuY3k9e2N1cnJlbmN5fVxuICAgICAgICAgICAgcmVmdW5kRGV0YWlsc1xuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblJlZnVuZERldGFpbHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZERldGFpbHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBJY29uQnV0dG9uLCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHRvb2x0aXBDbGFzc2VzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgSW5mb0ljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFJlZnVuZFN0YXR1cyBmcm9tIFwiLi9SZWZ1bmRTdGF0dXNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e3JlZnVuZERldGFpbHMgPyBHUklEXzggOiBHUklEXzEyfVxuICAgICAgICBpdGVtXG4gICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgcHQ9ezJ9XG4gICAgICAgIHB4PXs0fVxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IGl0ZW0+XG4gICAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17NH0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtIHB4PXs0fSBwYj17cmVmdW5kRGV0YWlscyA/IFBBRERJTkdfMiA6IDB9IGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEF0dGVuZGVlfT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06IDxDb3B5VGV4dCB0ZXh0PXt0aWNrZXQubnVtYmVyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7cmVmdW5kRGV0YWlscyAmJiB0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgICAgPEdyaWQgeHM9ezR9IHBsPXs0fT5cbiAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgIFJlZnVuZGVkXG4gICAgICAgICAgICB7YXBwcm92ZWRSZWZ1bmRzLnNvbWUoKHIpID0+IHIucmVmdW5kZWRfdGF4ZXMubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICA8SHRtbFRvb2x0aXBcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnJlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgVGlja2V0IEFtb3VudFxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxiPlRheGVzPC9iPlxuICAgICAgICAgICAgICAgICAgICB7T2JqZWN0LmtleXMocmVmdW5kZWRUYXhlc1N1bW1hdG9yeSkubWFwKCh0YXhJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdG90YWxSZWZ1bmRlZFRheEFtb3VudCwgbmFtZSB9ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e3RheElkfT57YCR7bmFtZX0gLSAke2Zvcm1hdEN1cnJlbmN5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGN1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICl9YH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxJbmZvSWNvbiAvPlxuICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9IdG1sVG9vbHRpcD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIHttb21lbnQoXG4gICAgICAgICAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHNbMF0uYWN0aW9uX2RhdGUgKiBNSUxMSVNFQ19UT19TRUNcbiAgICAgICAgICAgICkuZm9ybWF0KFwiTU1NIERELCBZWVlZXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHshcmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXsxMn0gcHI9ezR9IHBiPXsyfT5cbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZnVuZERldGFpbHM6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgc3RhdHVzQ29sb3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yKHRpY2tldCksXG4gICAgW3RpY2tldF1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Q2hpcFxuICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCByZWZ1bmQgc3RhdHVzIGxhYmVsXCJcbiAgICAgIGxhYmVsPXt0KGB0aWNrZXRfc3RhdHVzLnJlZnVuZF9yZXF1ZXN0XyR7c3RhdHVzQ29sb3J9YCl9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlc1tzdGF0dXNDb2xvcl19YH1cbiAgICAvPlxuICApO1xufTtcblxuUmVmdW5kU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyByZWZ1bmRCdWxrVGlja2V0cywgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBTVEVQX09ORSwgU1RFUF9USFJFRSwgU1RFUF9UV08gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0c01vZGFsID0gKHtcbiAgdGlja2V0cyxcbiAgc3VtbWl0LFxuICBvcGVuLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlcixcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29uZmlybVJlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfVFdPKTtcbiAgfTtcblxuICBjb25zdCBnb0JhY2tUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRUaWNrZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlZnVuZEJ1bGtUaWNrZXRzKHsgdGlja2V0czogdGlja2V0c1RvUmVmdW5kIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9USFJFRSk7IC8vIHN1Y2Nlc3MsIGFsbCByZWZ1bmRzIHdlcmUgcmVxdWVzdGVkXG4gICAgICAgIHNldFJlZnVuZFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvck1zZyh0KFwiZXJyb3JzLnJlZnVuZF91bnN1Y2Nlc3NmdWxcIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBPbmUgPSAoKSA9PiAoXG4gICAgPD5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X3NlbGVjdF9yZWZ1bmRcIil9XG4gICAgICA8L2gyPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAga2V5PXtgdGlja2V0LSR7dGlja2V0LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtcbiAgICAgICAgICAgICAgISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgICBpc1JlZnVuZE1vZGFsXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2NvbmZpcm1SZWZ1bmR9XG4gICAgICAgICAgZGlzYWJsZWQ9e3RpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94IGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiPlxuICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfY29uZmlybV9yZWZ1bmRcIil9XG4gICAgICA8L2gzPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0c1RvUmVmdW5kLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLkNUQUJ1dHRvbldyYXBwZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1yZXR1cm4tYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Z29CYWNrVG9SZWZ1bmR9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuYmFja1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVGhyZWUgPSAoKSA9PiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kU3VjY2Vzc2Z1bH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiXG4gICAgPlxuICAgICAgPENoZWNrQ2lyY2xlSWNvbiBzeD17eyBjb2xvcjogXCIjNGNhZjUwXCIgfX0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2d9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18xXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZzJ9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18yXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWZpbmlzaC1idXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgPlxuICAgICAgICB7dChcImdlbmVyYWwuZmluaXNoXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU3RlcHMgPSAoKSA9PiB7XG4gICAgc3dpdGNoIChzdGVwKSB7XG4gICAgICBjYXNlIFNURVBfT05FOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgICAgY2FzZSBTVEVQX1RXTzpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUd28oKTtcbiAgICAgIGNhc2UgU1RFUF9USFJFRTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUaHJlZSgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVmdW5kLXJlcXVlc3RzXCJcbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICA+XG4gICAgICAgIHtyZW5kZXJTdGVwcygpfVxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdHNNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0c01vZGFsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5LCBEcmF3ZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgQ2xvc2UgYXMgQ2xvc2VJY29uIH0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmlnaHREcmF3ZXIgPSAoeyBpZCwgdGl0bGUsIGNoaWxkcmVuLCBvcGVuLCBvbkNsb3NlLCBjbGFzc05hbWUgfSkgPT4gKFxuICA8RHJhd2VyXG4gICAgaWQ9e2lkfVxuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy53cmFwcGVyfSAke2NsYXNzTmFtZX1gfVxuICA+XG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPEljb25CdXR0b25cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZS1kcmF3ZXJcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSaWdodERyYXdlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU3VtbWl0SGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fVxuICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICA8L2gyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3VtbWl0SGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IERlbGVnYXRlRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZmlyc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5maXJzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2ZpcnN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9sYXN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0ubGFzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2xhc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5EZWxlZ2F0ZUZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGVsZWdhdGVGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgVHJhbnMsIHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgTGluaywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uLy4uLy4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbkhlYWRlciA9ICh7IGluUHJvZ3Jlc3MsIHRpY2tldCwgdXNlckVtYWlsLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91ID8gXCJ5b3VcIiA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiB0aWNrZXQudGlja2V0X3R5cGUubmFtZTtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB0cmFuc0tleSA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgICAgPyBcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfeW91cl9lcVwiXG4gICAgICAgIDogXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX290aGVyc19lcVwiO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VHJhbnNcbiAgICAgICAgICBpMThuS2V5PXt0cmFuc0tleX1cbiAgICAgICAgICBjb21wb25lbnRzPXt7XG4gICAgICAgICAgICBsaW5rOiAoXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWRcbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiLCBmb250V2VpZ2h0OiA3MDAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIGNvbXBsZXRlIGxhdGVyXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5V3JhcHBlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfXtcIiBcIn1cbiAgICAgICAgICB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5Bc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgVHJhbnMsIHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgTGluaywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlYXNzaWduSGVhZGVyID0gKHtcbiAgaW5Qcm9ncmVzcyxcbiAgYWxsb3dzRGVsZWdhdGUsXG4gIHRpY2tldCxcbiAgdXNlckVtYWlsLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IGFzc2lnbmVkVG9Zb3UgPyBcInlvdVwiIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG5cbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ucmVhc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBhbGxvd3NEZWxlZ2F0ZVxuICAgICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uXCIpXG4gICAgICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25fbm9fZGVsZWdhdGVcIik7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgIHJldHVybiAoXG4gICAgICA8VHJhbnNcbiAgICAgICAgaTE4bktleT17dHJhbnNLZXl9XG4gICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICBsaW5rOiAoXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkXG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiLCBmb250V2VpZ2h0OiA3MDAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgY29tcGxldGUgbGF0ZXJcbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICApXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuUmVhc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25IZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgUmVhc3NpZ25Gb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IFwiXCIsXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogeXVwLnN0cmluZyh0KFwidmFsaWRhdGlvbi50ZXh0LnN0cmluZ1wiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnBlcnNvbmFsX21lc3NhZ2VcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIG11bHRpbGluZVxuICAgICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmIGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5jYW5jZWxcIil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgICAvPlxuICAgICAgPC9mb3JtPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVhc3NpZ25Gb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduRm9ybTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgQ29sbGFwc2UsIERpdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgYXNzaWduQXR0ZW5kZWUsXG4gIGRlbGVnYXRlVGlja2V0LFxuICByZWFzc2lnblRpY2tldCxcbiAgc2F2ZUV4dHJhUXVlc3Rpb25zXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmVhc3NpZ25Gb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgQXNzaWduRVFGb3JtIGZyb20gXCIuLi9Bc3NpZ25FUUZvcm1cIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuLi9DdXN0b21EaWFsb2dcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IERlbGVnYXRlRm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybVwiO1xuaW1wb3J0IEFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXJcIjtcbmltcG9ydCBSZWFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmNvbnN0IFRpY2tldEFzc2lnbiA9ICh7IHRpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBvcGVuLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthc3NpZ25PcHRpb24sIHNldEFzc2lnbk9wdGlvbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcywgc2V0QXNzaWduYXRpb25JblByb2dyZXNzXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IGlzQXNzaWduZWRUb01lID0gdXNlclByb2ZpbGU/LmVtYWlsID09PSB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgY29uc3QgeyBhbGxvd3NEZWxlZ2F0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uQXNzaWduID0gKGVtYWlsLCBtZXNzYWdlID0gXCJcIikgPT4ge1xuICAgIGlmIChvd25lcklkKSB7XG4gICAgICBkaXNwYXRjaChyZWFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25EZWxlZ2F0ZSA9IChmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbCkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZGVsZWdhdGVUaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKVxuICAgICkudGhlbigoKSA9PiB7XG4gICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VFUUZvcm0gPSAoKSA9PiB7XG4gICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKFwiXCIpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlU2F2ZU1lc3NhZ2UgPSAoKSA9PiB7XG4gICAgc2V0U2F2ZU1lc3NhZ2UobnVsbCk7XG4gICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKFwiXCIpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBvblNhdmVFUSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZUV4dHJhUXVlc3Rpb25zKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHRpdGxlID0gb3duZXJJZFxuICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnRpdGxlXCIpXG4gICAgOiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnRpdGxlXCIpO1xuICBjb25zdCBIZWFkZXIgPSBvd25lcklkID8gUmVhc3NpZ25IZWFkZXIgOiBBc3NpZ25IZWFkZXI7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVhc3NpZ25EcmF3ZXJcIlxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICA+XG4gICAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0UmVhc3NpZ25Db250YWluZXJ9PlxuICAgICAgICAgICAgPEhlYWRlclxuICAgICAgICAgICAgICBpblByb2dyZXNzPXthc3NpZ25hdGlvbkluUHJvZ3Jlc3N9XG4gICAgICAgICAgICAgIGFsbG93c0RlbGVnYXRlPXthbGxvd3NEZWxlZ2F0ZX1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIHVzZXJFbWFpbD17dXNlclByb2ZpbGUuZW1haWx9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICB7YXNzaWduYXRpb25JblByb2dyZXNzID8gKFxuICAgICAgICAgICAgICA8QXNzaWduRVFGb3JtXG4gICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmVFUX1cbiAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25PcHRpb25zV3JhcHBlcn0+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0Fzc2lnbmVkVG9NZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQXNzaWduKHVzZXJQcm9maWxlLmVtYWlsLCBcIlwiKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX21lXCIpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgICAgICAgICAgICBvclxuICAgICAgICAgICAgICAgIDwvRGl2aWRlcj5cbiAgICAgICAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgICAgICAgPENvbGxhcHNlIGluPXthc3NpZ25PcHRpb24gPT09IFwib3RoZXJcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICAgICAgICAgICAgPFJlYXNzaWduRm9ybVxuICAgICAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgb25Bc3NpZ24odmFsLm5ld19hdHRlbmRlZV9lbWFpbCwgdmFsLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFzc2lnbk9wdGlvbihudWxsKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29sbGFwc2U+XG4gICAgICAgICAgICAgICAgICB7YXNzaWduT3B0aW9uICE9PSBcIm90aGVyXCIgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm90aGVyXCIpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19vdGhlclwiKX1cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgIHthbGxvd3NEZWxlZ2F0ZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICAgICAgICAgICAgICAgIG9yXG4gICAgICAgICAgICAgICAgICAgIDwvRGl2aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPENvbGxhcHNlIGluPXthc3NpZ25PcHRpb24gPT09IFwibWFuYWdlXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgICAgICAgICAgICAgPERlbGVnYXRlRm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGVnYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9maXJzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9sYXN0X25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFzc2lnbk9wdGlvbihudWxsKX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAgICB7YXNzaWduT3B0aW9uICE9PSBcIm1hbmFnZVwiICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwibWFuYWdlXCIpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5tYW5hZ2VfdGlja2V0XCIpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApfVxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFzYXZlTWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZVNhdmVNZXNzYWdlfVxuICAgICAgICB0aXRsZT17c2F2ZU1lc3NhZ2U/LnRpdGxlfVxuICAgICAgICBkZXNjcmlwdGlvbj17c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldEFzc2lnbi5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldEFzc2lnbjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgQXV0b2NvbXBsZXRlLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENvbXBhbnlGaWVsZCA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGlzUmVxdWlyZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIHNldEZpZWxkVG91Y2hlZCwgc2V0RmllbGRWYWx1ZSB9ID0gZm9ybWlrO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueTtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi50aXRsZVxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRydWUsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHRydWUsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwiZGV0YWlsc0RyYXdlclwiKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBpc0RlbGVnYXRlZD17ISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWR9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYWRkaXRpb25hbERldGFpbHN9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmFkaXRpb25hbF9kZXRhaWxzXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCwgaXNEZWxlZ2F0ZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9e1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsfVxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZW1haWxcIil9XG4gICAgICAgIGRpc2FibGVkXG4gICAgICAgIHZhbHVlPXt2YWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdfVxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgLz5cbiAgICAgIHtpc0RlbGVnYXRlZCAmJiAoXG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIHN4PXt7IGZvbnRXZWlnaHQ6IDUwMCwgbWFyZ2luOiBcIjEwcHggMFwiIH19PlxuICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5tYW5hZ2VfZm9yXCIpfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICApfVxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZCB8fCBpc0RlbGVnYXRlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICAgIDxDb21wYW55RmllbGQgZm9ybWlrPXtmb3JtaWt9IHN1bW1pdElkPXtzdW1taXRJZH0gaXNSZXF1aXJlZCAvPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pbmZvTm90ZX0+e3QoXCJ0aWNrZXRfZGV0YWlsLmluZm9fbm90ZVwiKX08L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldE93bmVyRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNEZWxlZ2F0ZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBEcmF3ZXIsIEljb25CdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgQ2xvc2UgYXMgQ2xvc2VJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb24sXG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IHtcbiAgZ2V0VGlja2V0UERGLFxuICBzYXZlVGlja2V0RGV0YWlscyxcbiAgcmVzZW5kTm90aWZpY2F0aW9uXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtzZW50Q29uZmlybWF0aW9uLCBzZXRTZW50Q29uZmlybWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERyYXdlclxuICAgICAgICBpZD1cImRldGFpbHNEcmF3ZXJcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIHshc3VtbWl0Py5pc192aXJ0dWFsICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRUaWNrZXRQZGZ9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zZW5kQnRufSAke1xuICAgICAgICAgICAgICAgICAgICAgIHNlbnRDb25maXJtYXRpb24gPyBzdHlsZXMuc2VudCA6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VuZEVtYWlsfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbnRcIilcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0RyYXdlcj5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFzYXZlTWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZVNhdmVNZXNzYWdlfVxuICAgICAgICB0aXRsZT17c2F2ZU1lc3NhZ2U/LnRpdGxlfVxuICAgICAgICBkZXNjcmlwdGlvbj17c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHtyZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyByZWZ1bmQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzSW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBpbmNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc1VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgdW5hc3NpZ25lZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZFJlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRGl2aWRlcixcbiAgVGFicyxcbiAgVGFiLFxuICB1c2VUaGVtZSxcbiAgdXNlTWVkaWFRdWVyeVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgVEFCUyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4uL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnbmVkVG9NZSBmcm9tIFwiLi4vT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICh7IHRpdGxlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuXG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKF8sIG5ld1RhYikgPT4ge1xuICAgIHNldFRhYihuZXdUYWIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50YWJXcmFwcGVyfT5cbiAgICAgIDxUYWJzXG4gICAgICAgIHZhbHVlPXt0YWJ9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUYWJDaGFuZ2V9XG4gICAgICAgIHZhcmlhbnQ9e2lzTW9iaWxlID8gXCJmdWxsV2lkdGhcIiA6IFwic3RhbmRhcmRcIn1cbiAgICAgID5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcIm9yZGVycy50aXRsZVwiKX0gdmFsdWU9e1RBQlMuT1JERVJTfSAvPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpfSB2YWx1ZT17VEFCUy5USUNLRVRTfSAvPlxuICAgICAgPC9UYWJzPlxuICAgICAgPERpdmlkZXIgLz5cbiAgICAgIDxCb3ggc3g9e3sgcHQ6IDYsIHBiOiAzIH19Pnt0aXRsZX08L0JveD5cbiAgICAgIHt0YWIgPT09IFRBQlMuT1JERVJTICYmIDxNeU9yZGVyc1RpY2tldHMgLz59XG4gICAgICB7dGFiID09PSBUQUJTLlRJQ0tFVFMgJiYgPEFzc2lnbmVkVG9NZSAvPn1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFRhYnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsLCBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgcmVzZXRGaWx0ZXIsXG4gIHJlc2V0RXJyb3IsXG4gIGNoYW5nZVNvcnQsXG4gIGNoYW5nZUZpbHRlclxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IEN1c3RvbVRoZW1lIGZyb20gXCIuLi9DdXN0b21UaGVtZVwiO1xuaW1wb3J0IExvYWRlciBmcm9tIFwiLi4vTG9hZGVyXCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nL0NvbnRleHRcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuXG5pbXBvcnQgRmlsdGVycyBmcm9tIFwiLi4vRmlsdGVyc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFdpZGdldFRhYnMgZnJvbSBcIi4uL1dpZGdldFRhYnNcIjtcbmltcG9ydCBTdW1taXRIZWFkZXIgZnJvbSBcIi4uL1N1bW1pdEhlYWRlclwiO1xuXG5jb25zdCBXaWRnZXRXcmFwcGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21lc3NhZ2UsIHNldE1lc3NhZ2VdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFttZXNzYWdlQ2FsbGJhY2ssIHNldE1lc3NhZ2VDYWxsYmFja10gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3Qge1xuICAgIGxvYWRpbmcsXG4gICAgYXBpRXJyb3IsXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QXBpRXJyb3IgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRFcnJvcigpKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcGlFcnJvcikge1xuICAgICAgc2V0TWVzc2FnZShhcGlFcnJvcik7XG4gICAgICBzZXRNZXNzYWdlQ2FsbGJhY2socmVzZXRBcGlFcnJvcik7XG4gICAgfVxuICB9LCBbYXBpRXJyb3JdKTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXJWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZUZpbHRlcihmaWx0ZXJWYWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU29ydCA9IChzb3J0VmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VTb3J0KHNvcnRWYWx1ZSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEN1c3RvbVRoZW1lPlxuICAgICAgPExvYWRlciBvcGVuPXtsb2FkaW5nfSAvPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIW1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHtcbiAgICAgICAgICBzZXRNZXNzYWdlKG51bGwpO1xuICAgICAgICAgIGlmIChtZXNzYWdlQ2FsbGJhY2spIG1lc3NhZ2VDYWxsYmFjaygpO1xuICAgICAgICB9fVxuICAgICAgICBib2R5PXttZXNzYWdlPy5ib2R5fVxuICAgICAgICB0aXRsZT17bWVzc2FnZT8udGl0bGV9XG4gICAgICAvPlxuICAgICAgPEZpbHRlcnNcbiAgICAgICAgb25GaWx0ZXI9e29uRmlsdGVyfVxuICAgICAgICBvblNvcnQ9e29uU29ydH1cbiAgICAgICAgb25TZWFyY2g9e29uRmlsdGVyfVxuICAgICAgICBvblJlc2V0PXtvblJlc2V0fVxuICAgICAgLz5cbiAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRzVGl0bGVUZXh0fT5cbiAgICAgICAgICB7ZmlsdGVyVmFsdWVzXG4gICAgICAgICAgICA/IHQoXCJsYWJlbHMuc2VhcmNoX3Jlc3VsdHNcIiwgeyBmaWx0ZXI6IGZpbHRlclZhbHVlcyB9KVxuICAgICAgICAgICAgOiB0KFwibGFiZWxzLnRpY2tldHNcIil9XG4gICAgICAgIDwvaDM+XG4gICAgICA8L0JveD5cbiAgICAgIDxDdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXsoc2V0TWVzc2FnZSwgc2V0TWVzc2FnZUNhbGxiYWNrKX0+XG4gICAgICAgIDxXaWRnZXRUYWJzIHRpdGxlPXs8U3VtbWl0SGVhZGVyIC8+fSAvPlxuICAgICAgPC9DdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tVGhlbWU+XG4gICk7XG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoV2lkZ2V0V3JhcHBlcik7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChydW4pIHtcbiAgICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3duZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bl0pO1xuXG4gIGNvbnN0IHsgZXh0cmFRdWVzdGlvbnMsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZVxuICApO1xuXG4gIHJldHVybiB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUdldFRpY2tldDtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBTbW9vdGggc2Nyb2xsaW5nIGZ1bmN0aW9uIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuZnVuY3Rpb24gc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCB0YXJnZXRTY3JvbGxUb3AsIGR1cmF0aW9uKSB7XG4gIGNvbnN0IHN0YXJ0U2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgY29uc3QgZGlzdGFuY2UgPSB0YXJnZXRTY3JvbGxUb3AgLSBzdGFydFNjcm9sbFRvcDtcbiAgbGV0IHN0YXJ0VGltZSA9IG51bGw7XG5cbiAgZnVuY3Rpb24gYW5pbWF0aW9uU3RlcCh0aW1lc3RhbXApIHtcbiAgICBpZiAoIXN0YXJ0VGltZSkgc3RhcnRUaW1lID0gdGltZXN0YW1wO1xuICAgIGNvbnN0IGVsYXBzZWQgPSB0aW1lc3RhbXAgLSBzdGFydFRpbWU7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5taW4oZWxhcHNlZCAvIGR1cmF0aW9uLCAxKTtcbiAgICBjb25zdCBlYXNlSW5PdXRRdWFkID1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICBwcm9ncmVzcyA8IDAuNSA/IDIgKiBwcm9ncmVzcyAqKiAyIDogMSAtICgtMiAqIHByb2dyZXNzICsgMikgKiogMiAvIDI7XG5cbiAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gc3RhcnRTY3JvbGxUb3AgKyBkaXN0YW5jZSAqIGVhc2VJbk91dFF1YWQ7XG5cbiAgICBpZiAoZWxhcHNlZCA8IGR1cmF0aW9uKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xufVxuXG5jb25zdCB1c2VTY3JvbGxUb0Vycm9yID0gKGZvcm1paywgY29udGFpbmVySWQpID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIGlzU3VibWl0dGluZyB9ID0gZm9ybWlrO1xuICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgY29uc3QgZXJyb3JDb3VudCA9IGVycm9yQXJyYXkubGVuZ3RoO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gc29ydCBlbGVtZW50cyBieSBwb3NpdGlvblxuICAgIGNvbnN0IGVsZW1lbnRzU29ydGVkID0gZXJyb3JBcnJheVxuICAgICAgLnJlZHVjZSgocmVzdWx0LCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZWxlbWVudCwgZXJyb3IsIHRvcDogZWxSZWN0LnRvcCB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwgW10pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b3AgLSBiLnRvcCk7XG5cbiAgICBpZiAoZWxlbWVudHNTb3J0ZWQubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcklkKVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuTXVpRHJhd2VyLXBhcGVyXCIpO1xuICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnRzU29ydGVkWzBdO1xuXG4gICAgaWYgKGNvbnRhaW5lcj8uY29udGFpbnModGFyZ2V0LmVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lclxuICAgICAgY29uc3QgZWxlbU9mZmVzdCA9IDEwMDtcbiAgICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9uID0gNTAwO1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID1cbiAgICAgICAgdGFyZ2V0LnRvcCAtIGNvbnRhaW5lclJlY3QudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCAtIGVsZW1PZmZlc3Q7XG5cbiAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIHBvc2l0aW9uXG4gICAgICBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHNjcm9sbFRvcCwgYW5pbWF0aW9uRHVyYXRpb24pOyAvLyA1MDBtcyBkdXJhdGlvblxuICAgIH1cbiAgfSwgW2lzU3VibWl0dGluZ10pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlU2Nyb2xsVG9FcnJvcjtcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICB0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZTtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCBjYW5SZWFzc2lnbiA9XG4gICAgIWlzVW5hc3NpZ25lZCAmJlxuICAgIHRpY2tldC50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX3JlYXNzaWduICYmXG4gICAgKCF0aWNrZXQucHJvbW9fY29kZSB8fCB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX3JlYXNzaWduKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlLFxuICAgIGNhblJlYXNzaWduXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgU1RBUlRfTE9BRElORyxcbiAgU1RPUF9MT0FESU5HLFxuICBSRVNFVF9MT0FESU5HXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSLFxuICBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVELFxuICBSRUNFSVZFX1RJQ0tFVCxcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMsXG4gIFVQREFURV9USUNLRVQsXG4gIEFTU0lHTl9USUNLRVQsXG4gIFJFU0VUX0FQSV9FUlJPUixcbiAgU0VUX0FQSV9FUlJPUixcbiAgUkVTRVRfVElDS0VULFxuICBDSEFOR0VfRklMVEVSLFxuICBDSEFOR0VfU09SVCxcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX09SREVSX05VTUJFUixcbiAgRklMVEVSX1ZBUl9EQVRFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgREVMRUdBVEVfVElDS0VUXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UsIFRBQlMgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGhhc0xvYWRlZEFsbERhdGEgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBERUZBVUxUX0ZJTFRFUl9TVEFURSA9IHtcbiAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IFtdLFxuICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IFtdLFxuICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9EQVRFXTogbnVsbFxufTtcblxuY29uc3QgREVGQVVMVF9TVEFURSA9IHtcbiAgc3VtbWl0OiBudWxsLFxuICB1c2VyOiB7fSxcbiAgd2lkZ2V0TG9hZGluZzogZmFsc2UsXG4gIG1lbWJlck9yZGVyczogW10sXG4gIHVzZXJUaWNrZXRzOiBbXSxcbiAgZXh0cmFRdWVzdGlvbnM6IFtdLFxuICBjdXJyZW50VGlja2V0OiBudWxsLFxuICBlcnJvcnM6IHt9LFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgY3VycmVudF90YWI6IFRBQlMuT1JERVJTLFxuICBzb3J0OiB7fSxcbiAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgaXNPcmRlckxvYWRpbmc6IGZhbHNlLFxuICBvcmRlcnNfY3VycmVudF9wYWdlOiAwLFxuICBvcmRlcnNfbGFzdF9wYWdlOiAwLFxuICBvcmRlcnNfcGVyX3BhZ2U6IDUsXG4gIG9yZGVyc190b3RhbDogMCxcbiAgdGlja2V0X2N1cnJlbnRfcGFnZTogMCxcbiAgdGlja2V0X2xhc3RfcGFnZTogMCxcbiAgdGlja2V0X3Blcl9wYWdlOiA1LFxuICB0aWNrZXRfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c190b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogMCxcbiAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogMCxcbiAgYXBpRXJyb3I6IG51bGxcbn07XG5cbmNvbnN0IFdpZGdldFJlZHVjZXIgPSAoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHR5cGUsIHBheWxvYWQgfSA9IHt9KSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgTE9HT1VUX1VTRVI6XG4gICAgY2FzZSBSRVNFVF9TVEFURTpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgU1RBUlRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiB0cnVlIH07XG4gICAgY2FzZSBTVE9QX0xPQURJTkc6XG4gICAgY2FzZSBSRVNFVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IGZhbHNlIH07XG4gICAgY2FzZSBSRVNFVF9BUElfRVJST1I6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IG51bGwgfTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICAgICAgICBzb3J0OiB7fSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfQVBJX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IHRpdGxlLCBodG1sOiBib2R5IH0gPSBwYXlsb2FkO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiB7IHRpdGxlLCBib2R5IH0gfTtcbiAgICB9XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBDSEFOR0VfRklMVEVSOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZmlsdGVyOiB7IC4uLnN0YXRlLmZpbHRlciwgLi4ucGF5bG9hZCB9IH07XG4gICAgfVxuICAgIGNhc2UgQ0hBTkdFX1NPUlQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzb3J0OiB7IC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgbWVtYmVyT3JkZXJzLCB0b3RhbCkpIHJldHVybiBzdGF0ZTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLm1lbWJlck9yZGVycywgLi4uZGF0YV0sXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTOiB7XG4gICAgICBjb25zdCB7IHVzZXJUaWNrZXRzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIHVzZXJUaWNrZXRzLCB0b3RhbCkpIHJldHVybiBzdGF0ZTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHVzZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4udXNlclRpY2tldHMsIC4uLmRhdGFdLFxuICAgICAgICB1c2VyX3RpY2tldHNfdG90YWw6IHRvdGFsLFxuICAgICAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgZm9ybWVyT3JkZXI/Lm1lbWJlclRpY2tldHMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLmZvcm1lck9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRVxuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IFsuLi5mb3JtZXJPcmRlci5tZW1iZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdGlja2V0c19wYWdlX2xhc3Q6IGxhc3RfcGFnZSxcbiAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkID0gcGF5bG9hZDtcbiAgICAgIGNvbnN0IG9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoXG4gICAgICAgIChvKSA9PiBvLmlkID09PSB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkWzBdPy5vcmRlcl9pZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHMubWFwKFxuICAgICAgICAodGlja2V0KSA9PlxuICAgICAgICAgIHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQuZmluZCgodHJyKSA9PiB0cnIuaWQgPT09IHRpY2tldC5pZCkgfHwgdGlja2V0XG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5vcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czogdXBkYXRlZFRpY2tldHNcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBSRVNFVF9USUNLRVQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiBudWxsIH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldCA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0IH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBleHRyYVF1ZXN0aW9uczogZGF0YSB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IG9yZGVyLm1lbWJlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICBpZiAodGlja2V0LmlkID09PSB0aWNrZXREYXRhLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGlja2V0RGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRpY2tldDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMgfTtcbiAgICB9XG4gICAgY2FzZSBERUxFR0FURV9USUNLRVQ6XG4gICAgY2FzZSBBU1NJR05fVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldERhdGEsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFJlZHVjZXI7XG4iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb25maWd1cmVTdG9yZSB9IGZyb20gXCJAcmVkdXhqcy90b29sa2l0XCI7XG5pbXBvcnQge1xuICBwZXJzaXN0U3RvcmUsXG4gIHBlcnNpc3RSZWR1Y2VyLFxuICBGTFVTSCxcbiAgUkVIWURSQVRFLFxuICBQQVVTRSxcbiAgUEVSU0lTVCxcbiAgUFVSR0UsXG4gIFJFR0lTVEVSXG59IGZyb20gXCJyZWR1eC1wZXJzaXN0XCI7XG5pbXBvcnQgc3RvcmFnZSBmcm9tIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiO1xuaW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSBcInJlZHV4XCI7XG5pbXBvcnQgV2lkZ2V0UmVkdWNlciBmcm9tIFwiLi9yZWR1Y2VyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZSA9ICh7XG4gIGNsaWVudElkLFxuICBsb2dpblVybCxcbiAgc3VtbWl0LFxuICBhcGlCYXNlVXJsLFxuICB1cGRhdGVQcm9maWxlXG59KSA9PiB7XG4gIC8vIHRvIGFkZCBvdGhlciByZWR1Y2VycyBsYXRlclxuICBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgd2lkZ2V0U3RhdGU6IFdpZGdldFJlZHVjZXJcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gICAgcmVkdWNlcjogcGVyc2lzdFJlZHVjZXIoXG4gICAgICB7XG4gICAgICAgIGtleTogYHJvb3RfbXlfb3JkZXJzX3RpY2tldHNfJHtjbGllbnRJZH1gLFxuICAgICAgICBzdG9yYWdlXG4gICAgICB9LFxuICAgICAgcmVkdWNlcnNcbiAgICApLFxuICAgIG1pZGRsZXdhcmU6IChnZXREZWZhdWx0TWlkZGxld2FyZSkgPT5cbiAgICAgIGdldERlZmF1bHRNaWRkbGV3YXJlKHtcbiAgICAgICAgdGh1bms6IHtcbiAgICAgICAgICBleHRyYUFyZ3VtZW50OiB7XG4gICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICBzdW1taXQsXG4gICAgICAgICAgICBsb2dpblVybCxcbiAgICAgICAgICAgIHVwZGF0ZVByb2ZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGltbXV0YWJsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgc2VyaWFsaXphYmxlQ2hlY2s6IHtcbiAgICAgICAgICBpZ25vcmVkQWN0aW9uczogW0ZMVVNILCBSRUhZRFJBVEUsIFBBVVNFLCBQRVJTSVNULCBQVVJHRSwgUkVHSVNURVJdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdG9yZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VJbml0U3RvcmUgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRTdG9yZShjb25maWcpLCBbXSk7XG4gIGNvbnN0IHBlcnNpc3RvciA9IHVzZU1lbW8oKCkgPT4gcGVyc2lzdFN0b3JlKHN0b3JlKSwgW3N0b3JlXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yZSxcbiAgICBwZXJzaXN0b3JcbiAgfTtcbn07XG4iLCJpbXBvcnQge1xuICBpbml0TG9nT3V0LFxuICBnZXRBY2Nlc3NUb2tlblxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSBcIkBzZW50cnkvcmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc1Rva2VuU2FmZWx5ID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBY2Nlc3NUb2tlbigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgaW5pdExvZ091dCgpO1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICB9XG59O1xuIiwiZXhwb3J0IGNvbnN0IExBU1RfSE9VUl9PRl8yNF9IT1VSID0gMjM7XG5leHBvcnQgY29uc3QgTEFTVF9NSU5VVEVfT0ZfSE9VUiA9IDU5O1xuZXhwb3J0IGNvbnN0IE9ORV9QQUdFX05FWFQgPSAxO1xuZXhwb3J0IGNvbnN0IE1JTExJU0VDX1RPX1NFQyA9IDEwMDA7XG5leHBvcnQgY29uc3QgT05FX0RBWSA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDU7XG5leHBvcnQgY29uc3QgRklSU1RfUEFHRSA9IDE7XG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UID0gNTtcbmV4cG9ydCBjb25zdCBTVEVQX09ORSA9IDE7XG5leHBvcnQgY29uc3QgU1RFUF9UV08gPSAyO1xuZXhwb3J0IGNvbnN0IFNURVBfVEhSRUUgPSAzO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJTVEFUVVNfQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiU1RBVFVTX0lOQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUEVORElORyA9IFwiU1RBVFVTX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJTVEFUVVNfQ0FOQ0VMTEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0VSUk9SID0gXCJTVEFUVVNfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUFJPQ0VTU0lORyA9IFwiU1RBVFVTX1BST0NFU1NJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiU1RBVFVTX1VOQVNTSUdORURcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElORyA9IFwiU1RBVFVTX1JFRlVORF9QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCA9IFwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURUQgPSBcIlNUQVRVU19SRUZVTkRfUkVKRUNURURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMgPSBcIlJlcXVlc3RlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMgPSBcIkFwcHJvdmVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyA9IFwiUmVqZWN0ZWRcIjtcblxuZXhwb3J0IGNvbnN0IEpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyA9IDEwMDAwO1xuXG5leHBvcnQgY29uc3QgT05FX0lURU0gPSAxO1xuZXhwb3J0IGNvbnN0IFRXT19JVEVNID0gMjtcbmV4cG9ydCBjb25zdCBGSVZFX0lURU0gPSA1O1xuZXhwb3J0IGNvbnN0IFNJWF9JVEVNID0gNjtcblxuZXhwb3J0IGNvbnN0IFBST01JU0VfQkFUQ0hfTElNSVQgPSAxMDtcbmV4cG9ydCBjb25zdCBGSUZUWV9QRVJfUEFHRSA9IDUwO1xuXG5leHBvcnQgY29uc3QgRVJST1JfQ09ERVMgPSB7XG4gIDQwMTogNDAxLFxuICA0MDM6IDQwMSxcbiAgNDEyOiA0MDEsXG4gIDUwMDogNTAwXG59O1xuXG5leHBvcnQgY29uc3QgVEFCUyA9IHtcbiAgT1JERVJTOiBcIk9SREVSU1wiLFxuICBUSUNLRVRTOiBcIlRJQ0tFVFNcIlxufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUMsXG4gIEZJUlNUX1BBR0Vcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0KSByZXR1cm4ge307XG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cztcbiAgaWYgKCF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSByZXF1ZXN0ZWRQYWdlXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBsYXN0UGFnZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBzaG91bGRGZXRjaERhdGEgPSAocmVxdWVzdGVkUGFnZSwgY3VycmVudFBhZ2UsIGxhc3RQYWdlKSA9PiB7XG4gIGxldCByZXMgPSB0cnVlO1xuXG4gIGlmIChyZXF1ZXN0ZWRQYWdlIDw9IDApIHJlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGlzU2FtZVBhZ2UgPSBjdXJyZW50UGFnZSA+IDAgJiYgcmVxdWVzdGVkUGFnZSA9PT0gY3VycmVudFBhZ2U7XG4gIGNvbnN0IGlzTGFzdFBhZ2UgPSBjdXJyZW50UGFnZSA+IDAgJiYgY3VycmVudFBhZ2UgPT09IGxhc3RQYWdlO1xuXG4gIGlmIChpc1NhbWVQYWdlIHx8IGlzTGFzdFBhZ2UpIHJlcyA9IGZhbHNlO1xuXG4gIGlmIChyZXF1ZXN0ZWRQYWdlID09PSBGSVJTVF9QQUdFKSByZXMgPSB0cnVlO1xuXG4gIGNvbnNvbGUubG9nKFxuICAgIGBteS1vcmRlcnMtdGlja2V0LXdpZGdldDo6dXRpbHM6OnNob3VsZEZldGNoRGF0YSByZXF1ZXN0ZWRQYWdlICR7cmVxdWVzdGVkUGFnZX0gY3VycmVudFBhZ2UgJHtjdXJyZW50UGFnZX0gbGFzdFBhZ2UgJHtsYXN0UGFnZX0gcmVzICR7cmVzfWBcbiAgKTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBsYXN0UGFnZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBoYXNNb3JlMkZldGNoID0gKGN1cnJlbnRQYWdlLCBsYXN0UGFnZSkgPT4ge1xuICBjb25zdCByZXMgPSBjdXJyZW50UGFnZSA+IDAgJiYgY3VycmVudFBhZ2UgPCBsYXN0UGFnZTtcbiAgY29uc29sZS5sb2coXG4gICAgYG15LW9yZGVycy10aWNrZXQtd2lkZ2V0Ojp1dGlsczo6aGFzTW9yZTJGZXRjaCBjdXJyZW50UGFnZSAke2N1cnJlbnRQYWdlfSBsYXN0UGFnZSAke2xhc3RQYWdlfSByZXMgJHtyZXN9YFxuICApO1xuICByZXR1cm4gcmVzO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gdG90YWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTG9hZGVkQWxsRGF0YSA9IChjdXJyZW50UGFnZSwgZGF0YSwgdG90YWwpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBjb25zdCBkYXRhTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDtcbiAgLy8gd2UgYWxyZWFkeSBsb2FkZWQgYWxsICBkYXRhICggZmlyc3QgcGFnZSBpcyBhbHdheXMgcmVsb2FkZWQgaXQgKVxuICBpZiAoY3VycmVudFBhZ2UgPiBGSVJTVF9QQUdFICYmIGRhdGFMZW5ndGggPiAwICYmIGRhdGFMZW5ndGggPT09IHRvdGFsKVxuICAgIHJlcyA9IHRydWU7XG4gIGNvbnNvbGUubG9nKFxuICAgIGBteS1vcmRlcnMtdGlja2V0LXdpZGdldDo6dXRpbHM6Omhhc0xvYWRlZEFsbERhdGEgY3VycmVudFBhZ2UgJHtjdXJyZW50UGFnZX0gZGF0YS5sZW5ndGggJHtkYXRhTGVuZ3RofSByZXMgJHtyZXN9YFxuICApO1xuICByZXR1cm4gcmVzO1xufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBPTkVfREFZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRQYXN0ID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCByZWFzc2lnbl9kYXRlID1cbiAgICBzdW1taXQ/LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgICAgOiBzdW1taXQuZW5kX2RhdGU7XG5cbiAgcmV0dXJuIG5vdyA+IHJlYXNzaWduX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRTdGFydGVkID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnN0YXJ0X2RhdGUgPCBub3c7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0RGF5c0RpZmYgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5Py5kaWZmKHN0YXJ0RGF5LCBcImRheXNcIik7XG4gIHJldHVybiB7XG4gICAgc3RhcnREYXksXG4gICAgZW5kRGF5LFxuICAgIGRheXNcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHsgc3RhcnREYXksIGVuZERheSwgZGF5cyB9ID0gZ2V0U3VtbWl0RGF5c0RpZmYoc3VtbWl0KTtcbiAgaWYgKCFzdGFydERheSB8fCAhZW5kRGF5KSByZXR1cm4gbnVsbDtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRMb2NhdGlvbiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gc3VtbWl0LmxvY2F0aW9ucz8uZmluZChcbiAgICAobCkgPT4gbC5jbGFzc19uYW1lID09PSBcIlN1bW1pdFZlbnVlXCIgJiYgbC5pc19tYWluID09PSB0cnVlXG4gICk7XG5cbiAgaWYgKCFsb2NhdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIGAke2xvY2F0aW9uLmNpdHl9LCAke2xvY2F0aW9uLmNvdW50cnl9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRSZWFzc2lnbkRhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTdW1taXREZXRhaWxzID0gKHsgc3VtbWl0IH0pID0+IHtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG5cbiAgaWYgKCFzdW1taXQpIHJldHVybiB7fTtcblxuICBjb25zdCBsb2NhdGlvbiA9IGdldFN1bW1pdExvY2F0aW9uKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUgPSBtb21lbnQudHooXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lID0gZ2V0U3VtbWl0RGF5c0RpZmYoXG4gICAgbm93LFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy5uYW1lXG4gICk7XG5cbiAgY29uc3QgaXNQYXN0ID0gY2hlY2tTdW1taXRQYXN0KHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNTdGFydGVkID0gY2hlY2tTdW1taXRTdGFydGVkKHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBzdW1taXQ/Lm5hbWUsXG4gICAgbm93LFxuICAgIGxvY2F0aW9uLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIGZvcm1hdHRlZFJlYXNzaWduRGF0ZSxcbiAgICBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lLFxuICAgIGlzUGFzdCxcbiAgICBpc1N0YXJ0ZWQsXG4gICAgaXNSZWFzc2lnbmFibGVcbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7XG4gIFNUQVRVU19DQU5DRUxMRUQsXG4gIFNUQVRVU19DT01QTEVURSxcbiAgU1RBVFVTX0lOQ09NUExFVEUsXG4gIFNUQVRVU19VTkFTU0lHTkVELFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkcsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUEVORElOR19MQyxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5uZXRfc2VsbGluZ19jb3N0ID4gdGlja2V0LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICApO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT5cbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gICk7XG5leHBvcnQgY29uc3QgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PiB7XG4gIGNvbnN0IGFsbFRpY2tldHMgPSBbXTtcbiAgdGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGFsbFRpY2tldHMucHVzaCh0aWNrZXQpO1xuICAgIH1cbiAgICByZXR1cm4gdGlja2V0O1xuICB9KTtcbiAgcmV0dXJuIGFsbFRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMgPSAodGlja2V0KSA9PiB7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDtcbiAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXModGlja2V0KTtcbiAgbGV0IHN0YXR1c0NvbG9yID0gXCJcIjtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUEVORElORzpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwiYXBwcm92ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJyZWplY3RlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gIH1cbiAgcmV0dXJuIHN0YXR1c0NvbG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGluY2x1ZGVEaXNjbGFpbWVyLFxuICBvbmx5UmVsZXZhbnQgPSBmYWxzZVxuKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdIHx8IG93bmVyLmVtYWlsIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldIHx8IG93bmVyLmNvbXBhbnk7XG4gIH1cblxuICBpZiAoaW5jbHVkZURpc2NsYWltZXIpIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoXG4gICAgICAgICAgcnVsZS5zdWJfcXVlc3Rpb24ubmFtZSxcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdWJBbnN3ZXIgPSBhbnN3ZXJzW3N1YlF1ZXN0aW9uU2x1Z107XG4gICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuXG4gICAgICAgIGlmICghb25seVJlbGV2YW50IHx8IG1hdGNoKSB7XG4gICAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICAgIHN1YkFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHJ1bGUuc3ViX3F1ZXN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgLmVtYWlsKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID0geXVwLmxhenkoKHZhbHVlKSA9PlxuICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiXG4gICAgICAgID8geXVwXG4gICAgICAgICAgICAub2JqZWN0KClcbiAgICAgICAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgICAgICAgICAudHlwZUVycm9yKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfZmllbGRcIikpXG4gICAgICAgIDogeXVwLnN0cmluZygpLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICApO1xuICB9XG5cbiAgaWYgKGRpc2NsYWltZXJNYW5kYXRvcnkpIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9IHl1cFxuICAgICAgLmJvb2woKVxuICAgICAgLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihxLnR5cGUsIHEubmFtZSwgcS5tYW5kYXRvcnkpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG4gICAgICAgIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgICAgICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICAgICAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIClcbiAgICAgICAgICAubnVsbGFibGUoKVxuICAgICAgICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKHF1ZXN0aW9uQW5zLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhlbjogKHNjaCkgPT4gc2NoLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNvcHlJY29uX19fbEkzZVFcIjtcbnZhciBfMiA9IFwicmV2ZXJzZWRfX196SnptRFwiO1xudmFyIF8zID0gXCJ0cnVuY2F0ZWRfX19qV1NuVVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fbVZQaVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY29weUljb25cIiwgXzIgYXMgXCJyZXZlcnNlZFwiLCBfMyBhcyBcInRydW5jYXRlZFwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX214RUtXXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX080c1NzXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX0YzbnVLXCI7XG52YXIgXzQgPSBcImNsZWFuQnV0dG9uX19fcXFEdlVcIjtcbnZhciBfNSA9IFwiY29udGFpbmVyX19fUWVRWV9cIjtcbnZhciBfNiA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX1o0Mm13XCI7XG52YXIgXzcgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1RaN2tKXCI7XG52YXIgXzggPSBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyX19fa1VuVzlcIjtcbnZhciBfOSA9IFwiZmlsdGVyQ29udGFpbmVyX19fcnJxcDlcIjtcbnZhciBfYSA9IFwiZmlsdGVyRGF0ZUxhYmVsX19fSmdiY3NcIjtcbnZhciBfYiA9IFwiZmlsdGVySWNvbl9fX2lpT3pvXCI7XG52YXIgX2MgPSBcImZpbHRlckxhYmVsX19fc2taUDdcIjtcbnZhciBfZCA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX0lEcmxTXCI7XG52YXIgX2UgPSBcImZpbHRlck51bUFjdGl2ZV9fX2ttRUVLXCI7XG52YXIgX2YgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19uaE5Kc1wiO1xudmFyIF8xMCA9IFwibGFiZWxfX19MQW1lX1wiO1xudmFyIF8xMSA9IFwic2hvd0ZpbHRlckxpc3RfX19JVzR4R1wiO1xudmFyIF8xMiA9IFwic29ydENvbnRhaW5lcl9fX3NiNUJkXCI7XG52YXIgXzEzID0gXCJzb3J0SWNvbl9fX2NfWFppXCI7XG52YXIgXzE0ID0gXCJzb3J0TGFiZWxfX19kWGlNeVwiO1xudmFyIF8xNSA9IFwic29ydExpc3RDb250YWluZXJfX19QcDJYZ1wiO1xudmFyIF8xNiA9IFwidGl0bGVXcmFwcGVyX19fUDZtUHVcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNsZWFuQnV0dG9uXCIsIF81IGFzIFwiY29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNyBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfOCBhcyBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyXCIsIF85IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF9hIGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF9iIGFzIFwiZmlsdGVySWNvblwiLCBfYyBhcyBcImZpbHRlckxhYmVsXCIsIF9kIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfZSBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZiBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgXzEwIGFzIFwibGFiZWxcIiwgXzExIGFzIFwic2hvd0ZpbHRlckxpc3RcIiwgXzEyIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTMgYXMgXCJzb3J0SWNvblwiLCBfMTQgYXMgXCJzb3J0TGFiZWxcIiwgXzE1IGFzIFwic29ydExpc3RDb250YWluZXJcIiwgXzE2IGFzIFwidGl0bGVXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNhbmNlbEJ0bl9fX3FEZXhoXCI7XG52YXIgXzIgPSBcImZvb3Rlcl9fX1NONzB5XCI7XG52YXIgXzMgPSBcInNhdmVCdG5fX19uYlU2Y1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjYW5jZWxCdG5cIiwgXzIgYXMgXCJmb290ZXJcIiwgXzMgYXMgXCJzYXZlQnRuXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm15T3JkZXJzV3JhcHBlcl9fX0hKbXlzXCI7XG52YXIgXzIgPSBcIm5vT3JkZXJzRm91bmRfX19EUndnb1wiO1xudmFyIF8zID0gXCJub09yZGVyc0ljb25XcmFwcGVyX19fdFBUbVlcIjtcbmV4cG9ydCB7IF8xIGFzIFwibXlPcmRlcnNXcmFwcGVyXCIsIF8yIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMyBhcyBcIm5vT3JkZXJzSWNvbldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwib3JkZXJEZXRhaWxzTW1vdW50X19fcjNrUkFcIjtcbnZhciBfMiA9IFwib3JkZXJEZXRhaWxzVGlja2V0c19fX200SWpLXCI7XG52YXIgXzMgPSBcIm9yZGVyU3VtbWFyeUJ1dHRvbl9fX3V4amh0XCI7XG52YXIgXzQgPSBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9fX19fUkJYRVwiO1xudmFyIF81ID0gXCJvcmRlclN1bW1hcnlUYWJsZV9fX1lEbnhWXCI7XG52YXIgXzYgPSBcIm9yZGVyU3VtbWFyeVdyYXBwZXJfX19Sd0lFUlwiO1xudmFyIF83ID0gXCJyZWZ1bmREaXNhYmxlZF9fX2p2cmszXCI7XG5leHBvcnQgeyBfMSBhcyBcIm9yZGVyRGV0YWlsc01tb3VudFwiLCBfMiBhcyBcIm9yZGVyRGV0YWlsc1RpY2tldHNcIiwgXzMgYXMgXCJvcmRlclN1bW1hcnlCdXR0b25cIiwgXzQgYXMgXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvXCIsIF81IGFzIFwib3JkZXJTdW1tYXJ5VGFibGVcIiwgXzYgYXMgXCJvcmRlclN1bW1hcnlXcmFwcGVyXCIsIF83IGFzIFwicmVmdW5kRGlzYWJsZWRcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXNzaWduVGlja2V0QnV0dG9uX19fenpMc2NcIjtcbnZhciBfMiA9IFwiYXNzaWduVG9NZVRleHRfX19aUGFleFwiO1xudmFyIF8zID0gXCJhc3NpZ25lZEJ5VGV4dF9fX2JOWjd6XCI7XG52YXIgXzQgPSBcImFzc2lnbmVkVG9NZURlc19fX0dqRmtWXCI7XG52YXIgXzUgPSBcImFzc2lnbmVkVG9NZVdyYXBwZXJfX19VeGMyeVwiO1xudmFyIF82ID0gXCJiYWRnZUZlYXR1cmVfX19BMkxNVlwiO1xudmFyIF83ID0gXCJiYWRnZUZlYXR1cmVXcmFwcGVyX19fSVFMTlBcIjtcbnZhciBfOCA9IFwiY2hlY2tib3hfX19YWkpwYlwiO1xudmFyIF85ID0gXCJkaXNhYmxlZFJlZnVuZF9fX1NmZmw3XCI7XG52YXIgX2EgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgX2IgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfYyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX2VmeXJwXCI7XG52YXIgX2QgPSBcIm5vVGlja2V0c0ZvdW5kX19fakxvY29cIjtcbnZhciBfZSA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF9mID0gXCJvcmRlclRpY2tldEluZm9fX19nZW1xQlwiO1xudmFyIF8xMCA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfMTEgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgXzEyID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgXzEzID0gXCJyZWZ1bmRCdXR0b25zX19fakRsNEhcIjtcbnZhciBfMTQgPSBcInJlZnVuZE1vZGFsX19fRXFnUEZcIjtcbnZhciBfMTUgPSBcInNlbGVjdGVkX19fSFdHTmNcIjtcbnZhciBfMTYgPSBcInRhYkJ1dHRvbnNfX194VHlKQVwiO1xudmFyIF8xNyA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgXzE4ID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTkgPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMWEgPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xYiA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzFjID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMWQgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYXNzaWduVG9NZVRleHRcIiwgXzMgYXMgXCJhc3NpZ25lZEJ5VGV4dFwiLCBfNCBhcyBcImFzc2lnbmVkVG9NZURlc1wiLCBfNSBhcyBcImFzc2lnbmVkVG9NZVdyYXBwZXJcIiwgXzYgYXMgXCJiYWRnZUZlYXR1cmVcIiwgXzcgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF84IGFzIFwiY2hlY2tib3hcIiwgXzkgYXMgXCJkaXNhYmxlZFJlZnVuZFwiLCBfYSBhcyBcImRpc3BsYXlfbm9uZVwiLCBfYiBhcyBcImxhYmVsXCIsIF9jIGFzIFwibm9PcmRlcnNJY29uV3JhcHBlclwiLCBfZCBhcyBcIm5vVGlja2V0c0ZvdW5kXCIsIF9lIGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgX2YgYXMgXCJvcmRlclRpY2tldEluZm9cIiwgXzEwIGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF8xMSBhcyBcIm9yZGVyV3JhcHBlclwiLCBfMTIgYXMgXCJyZWFzc2lnbkJ1dHRvblwiLCBfMTMgYXMgXCJyZWZ1bmRCdXR0b25zXCIsIF8xNCBhcyBcInJlZnVuZE1vZGFsXCIsIF8xNSBhcyBcInNlbGVjdGVkXCIsIF8xNiBhcyBcInRhYkJ1dHRvbnNcIiwgXzE3IGFzIFwidGlja2V0QWN0aW9uQnV0dG9uc1wiLCBfMTggYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xOSBhcyBcInRpY2tldE5vXCIsIF8xYSBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzFiIGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMWMgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xZCBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIkNUQUJ1dHRvbldyYXBwZXJfX19LZ3E2Z1wiO1xudmFyIF8yID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMyA9IFwiYXBwcm92ZWRfX19zeEVKV1wiO1xudmFyIF80ID0gXCJiYWRnZUZlYXR1cmVfX190TGhFcFwiO1xudmFyIF81ID0gXCJiYWRnZUZlYXR1cmVXcmFwcGVyX19fXzlHYkRcIjtcbnZhciBfNiA9IFwiYnV0dG9uUGlsbF9fX0xlc2F6XCI7XG52YXIgXzcgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzggPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfOSA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgX2EgPSBcInBlbmRpbmdfX19hRWJXd1wiO1xudmFyIF9iID0gXCJyZWZ1bmREZXRhaWxfX19jUTI4VlwiO1xudmFyIF9jID0gXCJyZWZ1bmRFcnJvck1zZ19fX0FhaHpyXCI7XG52YXIgX2QgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF9lID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfZiA9IFwicmVmdW5kVGlja2V0QXR0ZW5kZWVfX19RWENqTVwiO1xudmFyIF8xMCA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfMTEgPSBcInJlamVjdGVkX19fTkpFNFpcIjtcbnZhciBfMTIgPSBcInN1YnRpdGxlX19fUHREZTJcIjtcbnZhciBfMTMgPSBcInN1Y2Nlc3NNc2dfX19IdE1zZVwiO1xudmFyIF8xNCA9IFwic3VjY2Vzc01zZzJfX19RNnpuYVwiO1xudmFyIF8xNSA9IFwidGlja2V0TGlzdF9fX2VEUVIzXCI7XG52YXIgXzE2ID0gXCJ0aWNrZXROb19fX19FQUQ0XCI7XG5leHBvcnQgeyBfMSBhcyBcIkNUQUJ1dHRvbldyYXBwZXJcIiwgXzIgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8zIGFzIFwiYXBwcm92ZWRcIiwgXzQgYXMgXCJiYWRnZUZlYXR1cmVcIiwgXzUgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF82IGFzIFwiYnV0dG9uUGlsbFwiLCBfNyBhcyBcImNhbmNlbEJ1dHRvblwiLCBfOCBhcyBcImNvbnRpbnVlQnV0dG9uXCIsIF85IGFzIFwiZGVsZXRlSWNvblwiLCBfYSBhcyBcInBlbmRpbmdcIiwgX2IgYXMgXCJyZWZ1bmREZXRhaWxcIiwgX2MgYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfZCBhcyBcInJlZnVuZFN1Y2Nlc3NmdWxcIiwgX2UgYXMgXCJyZWZ1bmRUZXh0XCIsIF9mIGFzIFwicmVmdW5kVGlja2V0QXR0ZW5kZWVcIiwgXzEwIGFzIFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyXCIsIF8xMSBhcyBcInJlamVjdGVkXCIsIF8xMiBhcyBcInN1YnRpdGxlXCIsIF8xMyBhcyBcInN1Y2Nlc3NNc2dcIiwgXzE0IGFzIFwic3VjY2Vzc01zZzJcIiwgXzE1IGFzIFwidGlja2V0TGlzdFwiLCBfMTYgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjbG9zZUJ0bl9fX3lTUUNPXCI7XG52YXIgXzIgPSBcImhlYWRlcl9fX2ZCWEc5XCI7XG52YXIgXzMgPSBcInRpdGxlX19fdHlaZVFcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1JPSkdzXCI7XG5leHBvcnQgeyBfMSBhcyBcImNsb3NlQnRuXCIsIF8yIGFzIFwiaGVhZGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1hucnBGXCI7XG52YXIgXzIgPSBcIndpZGdldEhlYWRlcl9fX2dnTHRNXCI7XG5leHBvcnQgeyBfMSBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMiBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJoZWFkZXJOb3RlX19fQWU1RUFcIjtcbnZhciBfMiA9IFwib3JkZXJOb19fX1ZPUFJ3XCI7XG52YXIgXzMgPSBcInB1cmNoYXNlZEJ5X19fTU5pSFRcIjtcbnZhciBfNCA9IFwicHVyY2hhc2VkQnlXcmFwcGVyX19fRGg2SFVcIjtcbnZhciBfNSA9IFwid3JhcHBlcl9fX21WdWlaXCI7XG5leHBvcnQgeyBfMSBhcyBcImhlYWRlck5vdGVcIiwgXzIgYXMgXCJvcmRlck5vXCIsIF8zIGFzIFwicHVyY2hhc2VkQnlcIiwgXzQgYXMgXCJwdXJjaGFzZWRCeVdyYXBwZXJcIiwgXzUgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnbk9wdGlvbnNXcmFwcGVyX19fb2pGXzdcIjtcbnZhciBfMiA9IFwidGlja2V0UmVhc3NpZ25Db250YWluZXJfX19nT3RhSlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25PcHRpb25zV3JhcHBlclwiLCBfMiBhcyBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF82ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfNyA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF84ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgXzkgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2EgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfYiA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfYyA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgX2UgPSBcInNlbnRfX19rNldLeFwiO1xudmFyIF9mID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMCA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMSA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTIgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNsb3NlQnRuXCIsIF82IGFzIFwiY29weUJ0blwiLCBfNyBhcyBcImRlbGVnYXRlZFRvXCIsIF84IGFzIFwiZG93bmxvYWRCdG5cIiwgXzkgYXMgXCJoZWFkZXJcIiwgX2EgYXMgXCJvcmRlck51bWJlclwiLCBfYiBhcyBcInFyQ29kZVwiLCBfYyBhcyBcInFyTm90ZVwiLCBfZCBhcyBcInNlbmRCdG5cIiwgX2UgYXMgXCJzZW50XCIsIF9mIGFzIFwic3RhdHVzXCIsIF8xMCBhcyBcInN1YnRpdGxlXCIsIF8xMSBhcyBcInRpY2tldERldGFpbENvbnRhaW5lclwiLCBfMTIgYXMgXCJ0aXRsZVwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJidXR0b25DYW5jZWxsZWRfX19FcmxEWlwiO1xudmFyIF8yID0gXCJidXR0b25Db21wbGV0ZV9fX2xsV2taXCI7XG52YXIgXzMgPSBcImJ1dHRvbkluY29tcGxldGVfX19Ub2xIZ1wiO1xudmFyIF80ID0gXCJidXR0b25QaWxsX19fenEydGNcIjtcbnZhciBfNSA9IFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkX19fcFd0MzBcIjtcbnZhciBfNiA9IFwiYnV0dG9uVW5hc3NpZ25lZF9fX1lEZDhYXCI7XG52YXIgXzcgPSBcInRpY2tldFN0YXR1c0NvbnRhaW5lcl9fX3FqNmZiXCI7XG5leHBvcnQgeyBfMSBhcyBcImJ1dHRvbkNhbmNlbGxlZFwiLCBfMiBhcyBcImJ1dHRvbkNvbXBsZXRlXCIsIF8zIGFzIFwiYnV0dG9uSW5jb21wbGV0ZVwiLCBfNCBhcyBcImJ1dHRvblBpbGxcIiwgXzUgYXMgXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRcIiwgXzYgYXMgXCJidXR0b25VbmFzc2lnbmVkXCIsIF83IGFzIFwidGlja2V0U3RhdHVzQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGl2ZV9fX3RMeVdaXCI7XG52YXIgXzIgPSBcInRhYk9wdGlvbl9fX0g0SDF1XCI7XG52YXIgXzMgPSBcInRhYldyYXBwZXJfX191MjFzR1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3RpdmVcIiwgXzIgYXMgXCJ0YWJPcHRpb25cIiwgXzMgYXMgXCJ0YWJXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInRpY2tldHNUaXRsZVRleHRfX19URFBtcFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ0aWNrZXRzVGl0bGVUZXh0XCIgfVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInAtbGltaXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcXItY29kZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ5dXBcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgUGVyc2lzdEdhdGUgfSBmcm9tIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRSZWR1Y2VyU3RhdGUgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmltcG9ydCBXaWRnZXRXcmFwcGVyIGZyb20gXCIuL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlclwiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBzdG9yZSwgcGVyc2lzdG9yIH0gPSB1c2VJbml0U3RvcmUoe1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgdXNlcixcbiAgICBhcGlCYXNlVXJsLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQmVmb3JlTGlmdCA9ICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IGZsdXNoID0gcGFyYW1zLmhhcyhcImZsdXNoU3RhdGVcIik7XG4gICAgaWYgKGZsdXNoKSBzdG9yZS5kaXNwYXRjaCh7IHR5cGU6IFJFU0VUX1NUQVRFLCBwYXlsb2FkOiBudWxsIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc3RvcmUuZGlzcGF0Y2goc2V0UmVkdWNlclN0YXRlKHN1bW1pdCwgdXNlcikpO1xuICB9LCBbc3VtbWl0LCB1c2VyXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UHJvdmlkZXIgc3RvcmU9e3N0b3JlfT5cbiAgICAgIDxQZXJzaXN0R2F0ZVxuICAgICAgICBvbkJlZm9yZUxpZnQ9e2hhbmRsZUJlZm9yZUxpZnR9XG4gICAgICAgIGxvYWRpbmc9e251bGx9XG4gICAgICAgIHBlcnNpc3Rvcj17cGVyc2lzdG9yfVxuICAgICAgPlxuICAgICAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICAgICAgPFdpZGdldFdyYXBwZXIgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJjcmVhdGVBY3Rpb24iLCJkZWxldGVSZXF1ZXN0IiwiZ2V0UmVxdWVzdCIsInB1dFJlcXVlc3QiLCJzdGFydExvYWRpbmciLCJzdG9wTG9hZGluZyIsInBMaW1pdCIsImdldElkVG9rZW4iLCJvYmplY3RUb1F1ZXJ5U3RyaW5nIiwiSWRUb2tlblZlcmlmaWVyIiwiaTE4biIsImdldEFjY2Vzc1Rva2VuU2FmZWx5IiwiREVGQVVMVF9JVEVNU19QRVJfUEFHRSIsIkVSUk9SX0NPREVTIiwiRklGVFlfUEVSX1BBR0UiLCJGSVJTVF9QQUdFIiwiUFJPTUlTRV9CQVRDSF9MSU1JVCIsIlRBQlMiLCJSRVNFVF9TVEFURSIsIlJFU0VUX0ZJTFRFUiIsIlJFU0VUX0FQSV9FUlJPUiIsIlNFVF9TVEFURSIsIlNFVF9BUElfRVJST1IiLCJDSEFOR0VfRklMVEVSIiwiQ0hBTkdFX1NPUlQiLCJHRVRfVVNFUl9PUkRFUlMiLCJSRUZVTkRfT1JERVIiLCJTRVRfQUNUSVZFX09SREVSX0lEIiwiRklMVEVSX1VTRVJfT1JERVJTIiwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMiLCJVUERBVEVfVElDS0VUIiwiUkVTRVRfVElDS0VUIiwiUkVDRUlWRV9USUNLRVQiLCJSRU1PVkVfVElDS0VUX0FUVEVOREVFIiwiQVNTSUdOX1RJQ0tFVCIsIkRFTEVHQVRFX1RJQ0tFVCIsIlJFRlVORF9USUNLRVQiLCJSRVNFTkRfTk9USUZJQ0FUSU9OIiwiR0VUX1RJQ0tFVFNfQllfT1JERVIiLCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiIsIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyIsIkdFVF9USUNLRVRfREVUQUlMUyIsIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TIiwiVElDS0VUX0FUVEVOREVFX0tFWVMiLCJlbWFpbCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueSIsImRpc2NsYWltZXJBY2NlcHRlZCIsImV4dHJhUXVlc3Rpb25zIiwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0VGlja2V0IiwiZGlzcGF0Y2giLCJyZXNldFN0YXRlIiwicmVzZXRGaWx0ZXIiLCJyZXNldEVycm9yIiwic2V0UmVkdWNlclN0YXRlIiwic3VtbWl0IiwidXNlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSIsIkZJTFRFUl9WQVJfVElDS0VUX1RZUEUiLCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCIsIkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIiwiRklMVEVSX1ZBUl9QUk9NT0NPREUiLCJGSUxURVJfVkFSX0ZSRUVfUEFJRCIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwiY2hhbmdlRmlsdGVyIiwiZmlsdGVyIiwiY2hhbmdlU29ydCIsInNvcnQiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImN1cnJlbnRUYWIiLCJwdXNoIiwiY29uY2F0IiwibG93ZXIiLCJ1cHBlciIsImxlbmd0aCIsImZpbHRlck5hbWUiLCJPUkRFUlMiLCJqb2luIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJ2YWx1ZSIsIk51bWJlciIsImlzTmFOIiwic3RhdHVzVGV4dCIsInRpdGxlIiwiaHRtbCIsImdldFVzZXJPcmRlcnMiLCJfcmVmMiIsInBhZ2UiLCJwZXJQYWdlIiwiZ2V0U3RhdGUiLCJfcmVmMyIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsImFjY2Vzc1Rva2VuIiwiY2F0Y2giLCJQcm9taXNlIiwicmVqZWN0IiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJwZXJfcGFnZSIsImtleXMiLCJmaWx0ZXJzIiwibmFtZSIsImlkIiwidGhlbiIsImUiLCJzZXRBY3RpdmVPcmRlcklkIiwib3JkZXJJZCIsInNldFVzZXIiLCJnZXRVc2VyVGlja2V0cyIsIl9yZWY0IiwiX3JlZjUiLCJ1c2VyUHJvZmlsZSIsImZpZWxkcyIsImV4cGFuZCIsIlRJQ0tFVFMiLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY2IiwiX3JlZjciLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmOCIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY5IiwiX3JlZjEwIiwicmVmdW5kQnVsa1RpY2tldHMiLCJfcmVmMTEiLCJ0aWNrZXRzIiwibGltaXQiLCJhbGxSZWZ1bmRUaWNrZXRDYWxscyIsIm1hcCIsImFsbCIsInN1Y2Nlc3NmdWxseVJlcXVlc3RlZCIsInIiLCJfciRyZXNwb25zZSIsInJlZnVuZF9yZXF1ZXN0cyIsInVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwiZ2V0RXh0cmFRdWVzdGlvbnMiLCJhdHRlbmRlZUlkIiwiX3JlZjEyIiwiZW5kcG9pbnQiLCJnZXRUaWNrZXQiLCJ0aWNrZXRJZCIsIl9yZWYxMyIsImZpbmFsbHkiLCJub3JtYWxpemVUaWNrZXQiLCJlbnRpdHkiLCJub3JtYWxpemVkRW50aXR5IiwiX29iamVjdFNwcmVhZCIsImF0dGVuZGVlX2NvbXBhbnkiLCJhdHRlbmRlZV9jb21wYW55X2lkIiwicmVmcmVzaFByb2ZpbGUiLCJkYXRhIiwidGlja2V0T3duZXIiLCJfcmVmMTQiLCJfdGlja2V0T3duZXIkbWFuYWdlciIsInVwZGF0ZVByb2ZpbGUiLCJhdHRlbmRlZV9lbWFpbCIsImF0dGVuZGVlX2ZpcnN0X25hbWUiLCJhdHRlbmRlZV9sYXN0X25hbWUiLCJoYXNNYW5hZ2VyIiwibWFuYWdlciIsIm1hbmFnZXJfaWQiLCJpdHNNZSIsInByb2ZpbGVDaGFuZ2VkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsIm5ld1Byb2ZpbGUiLCJzYXZlVGlja2V0RGV0YWlscyIsImFuc3dlcnMiLCJfcmVmMTUiLCJpZFRva2VuIiwidmVyaWZpZXIiLCJqd3QiLCJkZWNvZGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJhc3NpZ25BdHRlbmRlZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYxNiIsInJlYXNzaWduVGlja2V0IiwiX3JlZjE3IiwiZGVsZWdhdGVUaWNrZXQiLCJfcmVmMTgiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTkiLCJnZXRUaWNrZXRQREYiLCJfcmVmMjAiLCJxdWVyeVN0cmluZyIsImFwaVVybCIsImZldGNoIiwicmVzcG9uc2VUeXBlIiwiaGVhZGVycyIsIm9rIiwiYmxvYiIsInBkZiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiTW91c2VFdmVudCIsIlJlYWN0IiwiUHJvcFR5cGVzIiwidXNlVHJhbnNsYXRpb24iLCJCb3giLCJ1c2VGb3JtaWsiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsIkZvcm1Gb290ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiUmVnaXN0cmF0aW9uRGlzY2xhaW1lciIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsInBhcnNlQW5zd2VycyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJBc3NpZ25FUUZvcm0iLCJvblN1Ym1pdCIsIm9uQ2xvc2UiLCJmb3JtaWsiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeSIsInZhbHVlcyIsInJlbGV2YW50QW5zd2VycyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJjaGlsZHJlbiIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJkaXNjbGFpbWVyIiwiaXNSZXF1aXJlZCIsInNhdmVMYWJlbCIsImNhbmNlbExhYmVsIiwiZGlzYWJsZWQiLCJpc1N1Ym1pdHRpbmciLCJwcm9wVHlwZXMiLCJvYmplY3QiLCJhcnJheSIsImZ1bmMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwic3R5bGVzIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJ1c2VTdGF0ZSIsImNsYXNzTmFtZXMiLCJoYW5kbGVDb3B5IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0Iiwic2V0VGltZW91dCIsImNsYXNzTmFtZSIsIndyYXBwZXIiLCJzdHlsZSIsImNvcHlJY29uIiwib25DbGljayIsInN0cmluZyIsImJvb2wiLCJudW1iZXIiLCJjcmVhdGVDb250ZXh0IiwiZGVmYXVsdENvbnRleHRWYWx1ZSIsInNldE1lc3NhZ2UiLCJzZXRNZXNzYWdlQ2FsbGJhY2siLCJDdXN0b21EaWFsb2dDb250ZXh0IiwiRGlhbG9nIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJDdXN0b21EaWFsb2ciLCJvcGVuIiwiYm9keSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiVGhlbWVQcm92aWRlciIsImNyZWF0ZVRoZW1lIiwiZGFya0NvbG9yIiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwidGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJzZWNvbmRhcnkiLCJ0eXBvZ3JhcGh5IiwiYm9keTEiLCJmb250U2l6ZSIsImg1IiwiZm9udFdlaWdodCIsIm1hcmdpbkJvdHRvbSIsImg2IiwiY29tcG9uZW50cyIsIk11aUJ1dHRvbiIsInN0eWxlT3ZlcnJpZGVzIiwibGluZUhlaWdodCIsIk11aVRhYiIsImNvbG9yIiwiTXVpVGFicyIsImluZGljYXRvciIsImJhY2tncm91bmRDb2xvciIsIkN1c3RvbVRoZW1lIiwibm9kZSIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJlcnJvciIsImhlbHBlclRleHQiLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInZhbCIsImxhYmVsIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJuZXdWYWx1ZSIsInYiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm1hcmdpbiIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJSYXdIVE1MIiwiQ2hlY2tib3hRdWVzdGlvbkZpZWxkIiwiSW5wdXRMYWJlbCIsIk1lbnVJdGVtIiwiU2VsZWN0IiwiRHJvcGRvd25RdWVzdGlvbkZpZWxkIiwibGFiZWxJZCIsIlJhZGlvIiwiUmFkaW9Hcm91cCIsIlJhZGlvTGlzdFF1ZXN0aW9uRmllbGQiLCJUZXh0RmllbGQiLCJUZXh0UXVlc3Rpb25GaWVsZCIsIlF1ZXN0aW9uVHlwZV9DaGVja2JveCIsIlF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QiLCJRdWVzdGlvblR5cGVfQ29tYm9Cb3giLCJRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94IiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCIsImNoZWNrUnVsZSIsInJ1bGUiLCJhbnN3ZXJfdmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiYW5zd2VyX3ZhbHVlc19vcGVyYXRvciIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5Iiwic29tZSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJ0eXBlIiwiZ2V0VHlwZVZhbHVlIiwiYW5zIiwic3BsaXQiLCJ0cmFuc2Zvcm1BbndlcnNGb3JtYXQiLCJkaXNjbGFpbWVyX2FjY2VwdGVkIiwiZXh0cmFfcXVlc3Rpb25zIiwiZm9ybWF0dGVkRVEiLCJxdWVzdGlvbl9pZCIsInBhcnNlSW50IiwicG9wIiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRnJhZ21lbnQiLCJyZWFkT25seSIsImFsbG93RWRpdCIsInJlbmRlclJ1bGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlcyIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZUJsdXIiLCJ0b3VjaGVkIiwiQm9vbGVhbiIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsInVzZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsIiwiQ2FyZEhlYWRlciIsIkljb25CdXR0b24iLCJDb2xsYXBzZSIsIkNhcmRDb250ZW50IiwiRXhwYW5kTW9yZUljb24iLCJBc3NpZ25lZEZpbHRlciIsIm9uRmlsdGVyIiwiZmlsdGVyVmFsdWVzIiwic3RhdGUiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsImFzc2lnbmVkVmFsdWVzIiwiaGFuZGxlRmlsdGVyQ2hhbmdlIiwibmV3RmlsdGVyIiwidGl0bGVXcmFwcGVyIiwiYWN0aW9uIiwiZGlzYWJsZVJpcHBsZSIsInRyYW5zZm9ybSIsInRyYW5zaXRpb24iLCJpbiIsInRpbWVvdXQiLCJ1bm1vdW50T25FeGl0Iiwic3giLCJweSIsInBiIiwiYXNzaWduZWQiLCJ1c2VFZmZlY3QiLCJCYWRnZUZlYXR1cmVGaWx0ZXIiLCJiYWRnZV9mZWF0dXJlc190eXBlcyIsIm5ld0ZpbHRlcnMiLCJmIiwiYmYiLCJ1c2VSZWYiLCJTdGFjayIsIkZpbHRlckxpc3RJY29uIiwiQmFkZ2UiLCJCdXR0b24iLCJDYXJkIiwiRGl2aWRlciIsIlBhcGVyIiwiY29ubmVjdCIsIlRpY2tldFR5cGVGaWx0ZXIiLCJTdGF0dXNGaWx0ZXIiLCJGcmVlUGFpZEZpbHRlciIsIlByb21vQ29kZUZpbHRlciIsIkZpbHRlciIsIm9uUmVzZXQiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNQVJHSU5fUklHSFRfV0lUSF9CQURHRSIsIkFERF9GSUxURVJfTlVNQkVSIiwiY2FsY3VsYXRlQWN0aXZlRmlsdGVycyIsImNvdW50IiwidHJpbSIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwiYWxpZ25JdGVtcyIsInB0IiwiYmFkZ2VDb250ZW50IiwibXIiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwiZWxldmF0aW9uIiwiZmlsdGVyQ2hlY2tib3hDb250YWluZXIiLCJ2YXJpYW50IiwiY2xlYW5CdXR0b24iLCJtYXBTdGF0ZVRvUHJvcHMiLCJwcm9tb0NvZGUiLCJzZXRQcm9tb0NvZGUiLCJkZWJvdW5jZVRpbWVyIiwiREVCT1VOQ0VfVkFMVUUiLCJuZXdQcm9tb0NvZGUiLCJjbGVhclRpbWVvdXQiLCJwbGFjZWhvbGRlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJDbG9zZUljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsImRpc3BsYXkiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiYm9yZGVyQm90dG9tIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJDbG9zZUljb25XcmFwcGVyIiwicGFkZGluZyIsInRvcCIsInJpZ2h0IiwiY3Vyc29yIiwiekluZGV4IiwiU2VhcmNoIiwib25TZWFyY2giLCJzaG93Q2xvc2UiLCJzZXRTaG93Q2xvc2UiLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwib25LZXlEb3duIiwibmF0aXZlRXZlbnQiLCJyZXNldFNlYXJjaCIsImlucHV0UHJvcHMiLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwidGlja2V0X3R5cGVzIiwiR3JpZCIsIkZpbHRlcnMiLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsImZvb3RlciIsImNhbmNlbEJ0biIsInNpemUiLCJzYXZlQnRuIiwiRXJyb3JJY29uIiwiRXJyb3JMYWJlbCIsImRhdGFUZXN0SWQiLCJlcnJvckxhYmVsIiwiQmFja2Ryb3AiLCJDaXJjdWxhclByb2dyZXNzIiwiTG9hZGVyIiwiZHJhd2VyIiwidXNlRGlzcGF0Y2giLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJPTkVfUEFHRV9ORVhUIiwiaGFzTW9yZTJGZXRjaCIsInNob3VsZEZldGNoRGF0YSIsIk15T3JkZXJzVGlja2V0cyIsIm1lbWJlck9yZGVycyIsIm9yZGVyc19jdXJyZW50X3BhZ2UiLCJvcmRlcnNfbGFzdF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwidGlja2V0X3Blcl9wYWdlIiwiZmV0Y2hEYXRhIiwiY3VycmVudF9wYWdlIiwibXlPcmRlcnNXcmFwcGVyIiwiZGF0YUxlbmd0aCIsIm5leHQiLCJoYXNNb3JlIiwic2Nyb2xsVGhyZXNob2xkIiwibm9PcmRlcnNGb3VuZCIsIm5vT3JkZXJzSWNvbldyYXBwZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiX0ZyYWdtZW50IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJkaXNjb3VudFRvdGFsIiwicmVmdW5kVG90YWwiLCJ0YXhlc1RvdGFsIiwiYW1vdW50VG90YWwiLCJ0aWNrZXRTdW1tYXJ5IiwiaHVuZHJlZCIsIm9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0VG90YWwiLCJxdHkiLCJ0aWNrZXRfdHlwZSIsImNvc3QiLCJhbGlnbiIsImN1cnJlbmN5IiwiY3JlYXRlZCIsImRpc2NvdW50X2Ftb3VudCIsInRheGVzX2Ftb3VudCIsInNoYXBlIiwidXNlTm93IiwidGlja2V0c1JlZnVuZGFibGUiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJzdWJtaXRSZXF1ZXN0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJvbkVtYWlsU3VwcG9ydENsaWNrIiwibm93IiwiaXNJblJlZnVuZGFibGVQZXJpb2QiLCJyZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUiLCJhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCIsImlzUmVmdW5kYWJsZSIsImhhc1JlZnVuZFJlcXVlc3RzIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwiYXJyYXlPZiIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJtZW1iZXJUaWNrZXRzIiwiT3JkZXJMaXN0VGlja2V0cyIsIkFzc2lnblRvTWUiLCJ1c2VyVGlja2V0cyIsInVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UiLCJ1c2VyX3RpY2tldHNfbGFzdF9wYWdlIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJhc3NpZ25lZFRvTWVXcmFwcGVyIiwidGlja2V0TGlzdENvbnRhaW5lciIsImlzUmVmdW5kTW9kYWwiLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJzZWxlY3RUb1JlZnVuZCIsImlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCIsIm5vVGlja2V0c0ZvdW5kIiwiVHlwb2dyYXBoeSIsIkFzc2lnbmVkVG8iLCJFeHRlcm5hbEFzc2lnbmVkVG8iLCJNYW5hZ2VGb3IiLCJBdHRlbmRlZVN0YXR1cyIsIl90aWNrZXQkb3duZXIiLCJfdGlja2V0JG93bmVyMiIsIl90aWNrZXQkb3duZXIzIiwiaXNVbmFzc2lnbmVkIiwiaXNfYWN0aXZlIiwiaXNEZWxlZ2F0ZWQiLCJ0aWNrZXRPd25lckVtYWlsIiwiX3RpY2tldCRvcmRlciIsIl90aWNrZXQkb3JkZXIyIiwiX3RpY2tldCRvd25lcjQiLCJfdGlja2V0JG93bmVyNSIsImFzc2lnbmVkQnlUZXh0Iiwib3duZXJfZmlyc3RfbmFtZSIsIm93bmVyX2xhc3RfbmFtZSIsIlBBR0lOQVRJT05fRElTUExBWV9DT1VOVCIsIk9yZGVyTGlzdEl0ZW0iLCJfb3JkZXIkbWVtYmVyVGlja2V0cyIsIl9vcmRlciRtZW1iZXJUaWNrZXRzMiIsIm9uUGFnaW5hdGVDbGljayIsInRpY2tldHNUb1JlZnVuZCIsIml0ZW1zVG9EaXNwbGF5Iiwic2V0SXRlbXNUb0Rpc3BsYXkiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwidGlja2V0c190b3RhbCIsIm9uVmlld0xlc3MiLCJmaW5kIiwidmlld01vcmVCdXR0b24iLCJUaWNrZXRTdGF0dXMiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJUaWNrZXREZXRhaWwiLCJ1c2VUaWNrZXREZXRhaWxzIiwiVGlja2V0QXNzaWduIiwibW9kYWxWaWV3cyIsImRldGFpbCIsInJlYXNzaWduIiwiYXNzaWduIiwiVGlja2V0Q1RBcyIsImlzSW5jb21wbGV0ZSIsImlzUmVhc3NpZ25hYmxlIiwib25PcGVuQ2xpY2siLCJhc3NpZ25UaWNrZXRCdXR0b24iLCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uIiwicmVhc3NpZ25CdXR0b24iLCJfdGlja2V0JHRpY2tldF90eXBlIiwiX3RpY2tldCRiYWRnZSIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwib25SZWFzc2lnbmFibGVQZXJpb2QiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInJlZnVuZE1vZGFsIiwiZGlzYWJsZWRSZWZ1bmQiLCJzZWxlY3RlZCIsImNoZWNrYm94IiwicGwiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsInByIiwiYmFkZ2UiLCJmZWF0dXJlcyIsImJhZGdlRmVhdHVyZSIsInNyYyIsImltYWdlIiwiYWx0IiwidGlja2V0Tm8iLCJsZyIsIm1pbkhlaWdodCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJSZWZ1bmREZXRhaWxzIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiXyIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJyZWZ1bmREZXRhaWxzT3BlbiIsInNldFJlZnVuZERldGFpbHNPcGVuIiwidW5zZWxlY3RSZWZ1bmRUaWNrZXRzIiwiZmlsdGVyU2VsZWN0ZWQiLCJzZWxlY3RlZFRpY2tldCIsImNsb3NlU3VibWl0UmVxdWVzdCIsInJlc2V0QWxsUmVmdW5kU3RhdHVzZXMiLCJtb3JlRGV0YWlscyIsImJvcmRlckNvbG9yIiwidGFiQnV0dG9ucyIsIm1kIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwicm93U3BhY2luZyIsImNvbHVtblNwYWNpbmciLCJzbSIsImRpc3BsYXlfbm9uZSIsImZsZXhEaXJlY3Rpb24iLCJ1c2VNZW1vIiwiUmlnaHREcmF3ZXIiLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIiwicmVxdWVzdGVkVGlja2V0cyIsImNsb3NlU2xpZGVyIiwicmVmdW5kRGV0YWlscyIsInRvb2x0aXBDbGFzc2VzIiwiSW5mb0ljb24iLCJtb21lbnQiLCJSZWZ1bmRTdGF0dXMiLCJHUklEXzgiLCJHUklEXzEyIiwiUEFERElOR18yIiwiYXBwcm92ZWRSZWZ1bmRzIiwicmVmdW5kIiwicmVmdW5kZWRUYXhlc1N1bW1hdG9yeSIsInJlZnVuZGVkX3RheGVzIiwicnQiLCJ0YXhJZCIsInRheCIsInRvdGFsUmVmdW5kZWRUYXhBbW91bnQiLCJyZWZ1bmRlZF9hbW91bnQiLCJIdG1sVG9vbHRpcCIsImNsYXNzZXMiLCJwb3BwZXIiLCJtYXhXaWR0aCIsImJvcmRlciIsInJlZnVuZFRpY2tldEJveENvbnRhaW5lciIsInJlZnVuZERldGFpbCIsInJlZnVuZFRpY2tldEF0dGVuZGVlIiwiYWN0aW9uX2RhdGUiLCJmb3JtYXQiLCJDaGlwIiwiZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IiLCJzdGF0dXNDb2xvciIsImJ1dHRvblBpbGwiLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIkNoZWNrQ2lyY2xlSWNvbiIsIlNURVBfT05FIiwiU1RFUF9USFJFRSIsIlNURVBfVFdPIiwic3RlcCIsInNldFN0ZXAiLCJlcnJvck1zZyIsInNldEVycm9yTXNnIiwicmVmdW5kU3VjY2VzcyIsInNldFJlZnVuZFN1Y2Nlc3MiLCJjb25maXJtUmVmdW5kIiwiZ29CYWNrVG9SZWZ1bmQiLCJyZWZ1bmRUaWNrZXRzIiwicmVmdW5kU3RlcE9uZSIsInN1YnRpdGxlIiwidGlja2V0TGlzdCIsImFjdGlvbkJ1dHRvbnMiLCJjYW5jZWxCdXR0b24iLCJjb250aW51ZUJ1dHRvbiIsInJlZnVuZFN0ZXBUd28iLCJyZWZ1bmRFcnJvck1zZyIsIkNUQUJ1dHRvbldyYXBwZXIiLCJyZWZ1bmRTdGVwVGhyZWUiLCJyZWZ1bmRTdWNjZXNzZnVsIiwic3VjY2Vzc01zZyIsInN1Y2Nlc3NNc2cyIiwicmVuZGVyU3RlcHMiLCJpbmplY3RGaXJzdCIsIkRyYXdlciIsIkNsb3NlIiwiYW5jaG9yIiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwiaGVhZGVyIiwiY2xvc2VCdG4iLCJmbG9hdCIsImd1dHRlckJvdHRvbSIsIm9uZU9mVHlwZSIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJTdW1taXRIZWFkZXIiLCJ3aWRnZXRIZWFkZXIiLCJzdW1taXRUaXRsZURhdGUiLCJ5dXAiLCJEZWxlZ2F0ZUZvcm0iLCJkZWxlZ2F0ZV9maXJzdF9uYW1lIiwiZGVsZWdhdGVfbGFzdF9uYW1lIiwiZGVsZWdhdGVfZW1haWwiLCJyZXNldEZvcm0iLCJoYW5kbGVDYW5jZWwiLCJUcmFucyIsIkxpbmsiLCJBc3NpZ25IZWFkZXIiLCJpblByb2dyZXNzIiwidXNlckVtYWlsIiwiYXNzaWduZWRUb1lvdSIsImdldFNlY29uZGFyeVRpdGxlIiwiZ2V0SGVhZGVyTm90ZSIsInRyYW5zS2V5IiwiaTE4bktleSIsImNvbXBvbmVudCIsInB1cmNoYXNlZEJ5V3JhcHBlciIsInB1cmNoYXNlZEJ5Iiwib3duZXJfZW1haWwiLCJvcmRlck5vIiwiaGVhZGVyTm90ZSIsIlJlYXNzaWduSGVhZGVyIiwiYWxsb3dzRGVsZWdhdGUiLCJSZWFzc2lnbkZvcm0iLCJuZXdfYXR0ZW5kZWVfZW1haWwiLCJwZXJzb25hbF9tZXNzYWdlIiwibXVsdGlsaW5lIiwibWluUm93cyIsInVzZUdldFRpY2tldCIsInNhdmVNZXNzYWdlIiwic2V0U2F2ZU1lc3NhZ2UiLCJhc3NpZ25PcHRpb24iLCJzZXRBc3NpZ25PcHRpb24iLCJhc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJpc0Fzc2lnbmVkVG9NZSIsIm9uQXNzaWduIiwib25EZWxlZ2F0ZSIsIm9uQ2xvc2VFUUZvcm0iLCJvbkNsb3NlU2F2ZU1lc3NhZ2UiLCJvblNhdmVFUSIsImRlc2NyaXB0aW9uIiwicmVzb2x2ZSIsIkhlYWRlciIsInRpY2tldFJlYXNzaWduQ29udGFpbmVyIiwiYXNzaWduT3B0aW9uc1dyYXBwZXIiLCJteSIsIkF1dG9jb21wbGV0ZSIsInF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIiwiQ29tcGFueUZpZWxkIiwic3VtbWl0SWQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsIm9wdGlvbnMiLCJzZXRPcHRpb25zIiwic2V0RmllbGRUb3VjaGVkIiwicmVzdWx0cyIsIm5ld09wdGlvbnMiLCJhdXRvQ29tcGxldGUiLCJmcmVlU29sbyIsImluY2x1ZGVJbnB1dEluTGlzdCIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsImdldE9wdGlvbkxhYmVsIiwib3B0aW9uIiwidG1wVmFsdWUiLCJvbklucHV0Q2hhbmdlIiwibmV3SW5wdXRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJmaWx0ZXJlZCIsImlzRXhpc3RpbmciLCJyZW5kZXJJbnB1dCIsInJlbmRlck9wdGlvbiIsIm9wdGlvblByb3BzIiwiVGlja2V0T3duZXJGaWVsZHMiLCJUaWNrZXRGb3JtIiwiY2FuRWRpdCIsInJlZHVjZSIsImFkZGl0aW9uYWxEZXRhaWxzIiwiaW5mb05vdGUiLCJRUkNvZGUiLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJUV09fSVRFTSIsIl90aWNrZXQkb3JkZXIzIiwic2VudENvbmZpcm1hdGlvbiIsInNldFNlbnRDb25maXJtYXRpb24iLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsImlzQ29tcGxldGUiLCJvblNhdmUiLCJkb3dubG9hZFRpY2tldFBkZiIsIm9uU2VuZEVtYWlsIiwidGlja2V0RGV0YWlsQ29udGFpbmVyIiwicXJDb2RlIiwicXJfY29kZSIsInZpZXdCb3giLCJxck5vdGUiLCJpc192aXJ0dWFsIiwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lciIsImRvd25sb2FkQnRuIiwic2VuZEJ0biIsInNlbnQiLCJvcmRlck51bWJlciIsImF0dGVuZGVlQ29udGFpbmVyIiwiYXR0ZW5kZWVJbmZvVGl0bGUiLCJDb250YWluZXIiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMiLCJpc0FjdGl2ZSIsInJlZnVuZFJlcXVlc3RzIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkIiwiYnV0dG9uSW5jb21wbGV0ZSIsImJ1dHRvblVuYXNzaWduZWQiLCJidXR0b25Db21wbGV0ZSIsImJ1dHRvbkNhbmNlbGxlZCIsIkFzc2lnbmVkVG9NZSIsIldpZGdldFRhYnMiLCJ0YWIiLCJzZXRUYWIiLCJoYW5kbGVUYWJDaGFuZ2UiLCJuZXdUYWIiLCJ0YWJXcmFwcGVyIiwiV2lkZ2V0V3JhcHBlciIsIm1lc3NhZ2VDYWxsYmFjayIsImxvYWRpbmciLCJhcGlFcnJvciIsInJlc2V0QXBpRXJyb3IiLCJmaWx0ZXJWYWx1ZSIsInNvcnRWYWx1ZSIsInRpY2tldHNUaXRsZVRleHQiLCJQcm92aWRlciIsInJ1biIsImN1cnJlbnRUaWNrZXQiLCJzbW9vdGhTY3JvbGxUbyIsInRhcmdldFNjcm9sbFRvcCIsImR1cmF0aW9uIiwic3RhcnRTY3JvbGxUb3AiLCJzY3JvbGxUb3AiLCJkaXN0YW5jZSIsInN0YXJ0VGltZSIsImFuaW1hdGlvblN0ZXAiLCJ0aW1lc3RhbXAiLCJlbGFwc2VkIiwicHJvZ3Jlc3MiLCJNYXRoIiwibWluIiwiZWFzZUluT3V0UXVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNvbnRhaW5lcklkIiwiaXNWYWxpZCIsImVycm9yQXJyYXkiLCJlcnJvckNvdW50IiwiZWxlbWVudHNTb3J0ZWQiLCJyZXN1bHQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImVsUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImEiLCJiIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250YWluZXJSZWN0IiwiZWxlbU9mZmVzdCIsImFuaW1hdGlvbkR1cmF0aW9uIiwiaXNUaWNrZXRSZWZ1bmRhYmxlIiwiU1RBVFVTX0NPTVBMRVRFIiwiU1RBVFVTX0lOQ09NUExFVEUiLCJTVEFUVVNfQ0FOQ0VMTEVEIiwiU1RBVFVTX1VOQVNTSUdORUQiLCJfdGlja2V0JHByb21vX2NvZGUiLCJfdGlja2V0JHRpY2tldF90eXBlMiIsIl90aWNrZXQkcHJvbW9fY29kZTIiLCJnZXRTdGF0dXMiLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJwcm9tb19jb2RlIiwiYWxsb3dzX3RvX3JlYXNzaWduIiwiaW5pdFJlYWN0STE4bmV4dCIsIkxhbmd1YWdlRGV0ZWN0b3IiLCJlbiIsImVzIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiZGVidWciLCJyZXNvdXJjZXMiLCJ0cmFuc2xhdGlvbiIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsIkxPR09VVF9VU0VSIiwiU1RBUlRfTE9BRElORyIsIlNUT1BfTE9BRElORyIsIlJFU0VUX0xPQURJTkciLCJoYXNMb2FkZWRBbGxEYXRhIiwiREVGQVVMVF9GSUxURVJfU1RBVEUiLCJERUZBVUxUX1NUQVRFIiwid2lkZ2V0TG9hZGluZyIsImN1cnJlbnRfdGFiIiwiaXNPcmRlckxvYWRpbmciLCJvcmRlcnNfdG90YWwiLCJ0aWNrZXRfY3VycmVudF9wYWdlIiwidGlja2V0X2xhc3RfcGFnZSIsInRpY2tldF90b3RhbCIsInVzZXJfdGlja2V0c190b3RhbCIsIldpZGdldFJlZHVjZXIiLCJ0b3RhbCIsImxhc3RfcGFnZSIsImZvcm1lck9yZGVyIiwibyIsIl9kYXRhJCIsInVwZGF0ZWRPcmRlciIsInRpY2tldHNfcGFnZV9sYXN0IiwibW8iLCJfdGlja2V0c1JlZnVuZFJlcXVlc3QiLCJ1cGRhdGVkVGlja2V0cyIsInRyciIsInRpY2tldERhdGEiLCJuZXdPcmRlcnMiLCJuZXdUaWNrZXRzIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJPTkVfREFZIiwiU1RBVFVTX1BFTkRJTkciLCJTVEFUVVNfRVJST1IiLCJTVEFUVVNfUFJPQ0VTU0lORyIsIlNUQVRVU19SRUZVTkRfUEVORElORyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRUQiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyIsIlNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMiLCJKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMiLCJPTkVfSVRFTSIsIkZJVkVfSVRFTSIsIlNJWF9JVEVNIiwibG9jYWxlIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsImFtb3VudCIsInB1cmNoYXNlVGlja2V0VG90YWwiLCJjdXJyZW5jeU9iamVjdCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInRpY2tldFR5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldE9yZGVyVGlja2V0cyIsIl9vcmRlcnMkIiwib3JkZXJzIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwidHMiLCJzZXRIb3VycyIsImRlZmF1bHRDdXJyZW50VGltZSIsInJvdW5kIiwiRGF0ZSIsImdldE5vdyIsInRpbWVyU3RhdGUiLCJub3dVdGMiLCJyZXF1ZXN0ZWRQYWdlIiwiY3VycmVudFBhZ2UiLCJsYXN0UGFnZSIsImlzU2FtZVBhZ2UiLCJpc0xhc3RQYWdlIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJmZWF0dXJlIiwiZ2V0VGlja2V0VHlwZSIsImZpbmFsX2Ftb3VudCIsIm5ldF9zZWxsaW5nX2Nvc3QiLCJyciIsImdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczIiLCJhbGxUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczQiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM1IiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM2IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczgiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJpbmNsdWRlQXR0ZW5kZWVJbmZvIiwiaW5jbHVkZURpc2NsYWltZXIiLCJvbmx5UmVsZXZhbnQiLCJzdWJRdWVzdGlvblNsdWciLCJzdWJBbnN3ZXIiLCJtYXRjaCIsImRpc2NsYWltZXJNYW5kYXRvcnkiLCJsYXp5IiwidHlwZUVycm9yIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzMiIsInN1YlF1ZXN0aW9uIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsInNjaCIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9