1"use strict"; 2 3/** 4 * ã¢ã©ã¼ã 5 * 6 * @param {string} type 7 * @param {string} text 8 * @param {number|boolean} auto_close 9 */ 10function wlr_alert(type, message) { 11 var auto_close = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3000; 12 var types = ['success', 'error', 'warning', 'info', 'question']; 13 14 if (!types.includes(type)) { 15 return; 16 } 17 18 var param = { 19 titleText: '', 20 html: message, 21 icon: type, 22 confirmButtonText: 'éãã' 23 }; 24 25 if (auto_close) { 26 param.timer = auto_close; 27 } 28 29 Swal.fire(param); 30} 31 32(function ($) { 33 $(document).ready(function () { 34 /** 35 * ãã¼ã¸èªè¾¼æ ã¢ã©ã¼ã表示 36 */ 37 var alert_cookie = Cookies.get('wlr_alert'); 38 39 if (alert_cookie != null && alert_cookie.length) { 40 var data = JSON.parse(alert_cookie); 41 Cookies.set('wlr_alert', ''); 42 var auto_close = data.auto_close ? 3000 : false; 43 wlr_alert(data.type, data.text, auto_close); 44 } 45 /** 46 * ãã¹ã¯ã¼ã表示 47 */ 48 49 50 $('.toggle_password').each(function (i, el) { 51 var t = $(el); 52 var p = $(el).siblings('input[type="password"]'); 53 t.on('click', function () { 54 t.toggleClass('active'); 55 56 if (t.hasClass('active')) { 57 p.attr('type', 'text'); 58 } else { 59 p.attr('type', 'password'); 60 } 61 }); 62 }); 63 }); 64 /** 65 * vh, vw 66 */ 67 68 $(window).on('load resize orientationchange', function () { 69 setTimeout(function () { 70 var vh = window.innerHeight * 0.01; 71 var vw = window.innerWidth * 0.01; 72 document.documentElement.style.setProperty('--vh', "".concat(vh, "px")); 73 document.documentElement.style.setProperty('--vw', "".concat(vw, "px")); 74 }, 150); 75 }); 76})(jQuery); 77 78(function ($) { 79 $(document).ready(function () { 80 $('.password_sw').on('click', function () { 81 var wrapper = $(this).closest('.password_wrapper'); 82 wrapper.toggleClass('visible'); 83 var type = wrapper.hasClass('visible') ? 'text' : 'password'; 84 wrapper.find('input').attr('type', type); 85 }); 86 }); 87})(jQuery); 88 89(function ($) { 90 $(document).ready(function () { 91 if ($('body').hasClass('page-mypage')) { 92 // éµä¾¿çªå·å¤æ´æã®ä½æèªåå ¥åå¶å¾¡ 93 var setup_postcode_autofill = function setup_postcode_autofill(postcode_selector, fields_mapping) { 94 var $postcode_input = $(postcode_selector); 95 96 if ($postcode_input.length) { 97 var original_postcode = String($postcode_input.data('original-value') || ''); 98 $postcode_input.on('input', function () { 99 var current_value = String($(this).val()); // 7æ¡ã®æ°åãå ¥åããããã¤å ã®å¤ã¨ç°ãªãå ´å 100 101 if (/^[0-9]{7}$/.test(current_value) && current_value !== original_postcode) { 102 // YubinBango.Coreãç´æ¥å¼ã³åºãã¦ä½æãåå¾ 103 new YubinBango.Core(current_value, function (addr) { 104 // 使ãã£ã¼ã«ãã«å¤ãè¨å® 105 $(fields_mapping.pref).val(addr.region); 106 $(fields_mapping.city).val(addr.locality); 107 $(fields_mapping.street).val(addr.street); 108 }); 109 } 110 }); 111 } 112 }; // ä¼å¡æ å ±ã®éµä¾¿çªå· 113 114 115 var input_events = 'focus keyup paste change blur'; // ãå±ãå æ å ± è¡¨ç¤ºåæ¿ 116 117 var $sync = $('#sync_shipping_fields'); 118 var $shipping_table = $('.shipping_fields_table'); 119 120 if ($sync.prop('checked')) { 121 $shipping_table.removeClass('active'); 122 } else { 123 $shipping_table.addClass('active'); 124 } 125 126 $sync.on('click', function () { 127 if ($(this).prop('checked')) { 128 $shipping_table.removeClass('active'); 129 } else { 130 $shipping_table.addClass('active'); 131 } 132 }); // ãå±ãå æ å ± å ¥åå 容ãåæ 133 134 var sync_fields = function sync_fields() { 135 $('.member_fields input').each(function (i, el) { 136 var $m = $(this); 137 var m_key = $m.attr('name'); 138 var m_val = $m.val(); 139 var $s = $("input[name=\"shipping_".concat(m_key, "\"]")); 140 141 if ($s.length) { 142 $s.val(m_val); 143 } 144 }); 145 }; 146 147 $('.member_fields input').add($sync).on(input_events, function () { 148 if ($sync.prop('checked')) { 149 sync_fields(); 150 } 151 }); 152 setup_postcode_autofill('input[name="postcode"]', { 153 pref: 'input[name="address_pref"]', 154 city: 'input[name="address_city"]', 155 street: 'input[name="address1"]' 156 }); // ãå±ãå æ å ±ã®éµä¾¿çªå· 157 158 setup_postcode_autofill('input[name="shipping_postcode"]', { 159 pref: 'input[name="shipping_address_pref"]', 160 city: 'input[name="shipping_address_city"]', 161 street: 'input[name="shipping_address1"]' 162 }); // submit 163 164 $('.form_buttons .edit').on('click', function () { 165 $(this).closest('form').submit(); 166 }); // ç·¨é対象ã®é¡§å®¢ã鏿 167 168 $('.switch_customer select').select2({ 169 placeholder: 'ç·¨é対象ã®é¡§å®¢ã鏿', 170 allowClear: false 171 }).one('select2:open', function () { 172 $('.select2-search__field').attr('placeholder', '顧客åã»ã¡ã¼ã«ã»åå¼å ã³ã¼ãã»é»è©±çªå· ãå ¥å'); 173 var observer = new MutationObserver(function (mutations) { 174 mutations.forEach(function (mutation) { 175 if (mutation.type === 'childList') { 176 $('.select2-results__option').each(function (i, el) { 177 var $option = $(el); 178 179 if ($option.hasClass('multiline')) { 180 return; 181 } 182 183 var text = $option.text().replace(/ã/g, '<br>'); 184 $option.html(text); 185 $option.addClass('multiline'); 186 }); 187 } 188 }); 189 }); 190 var target = document.querySelector('.select2-results__options'); 191 observer.observe(target, { 192 childList: true 193 }); 194 }); 195 } // å¥ç´ã¹ãã¼ã¿ã¹ 196 197 198 if ($('body').is('.page-mypage-child.page-status')) { 199 var toggle_form_button = function toggle_form_button() { 200 var status = $('[name="status"]').val(); 201 var status_old = $('[name="status_old"]').val(); 202 var $buttons = $('.form_buttons'); 203 204 if (status == status_old) { 205 $buttons.addClass('disabled'); 206 } else { 207 $buttons.removeClass('disabled'); 208 } 209 }; 210 211 toggle_form_button(); 212 $('[name="status"]').on('change', toggle_form_button); 213 } 214 }); 215})(jQuery); 216 217(function ($) { 218 $(document).ready(function () { 219 /** 220 * ãã©ã³é¸æ 221 */ 222 if ($('.plan_fields').length) { 223 // è¦ç´ 224 var $plans = $('input[name="plan"]'); 225 var $models = $('#plan_models'); 226 var $models_field = $models.closest('.field'); 227 var $age_fields = $('select[name^="plan_age_"]'); 228 var $age_fields_wrapper = $age_fields.closest('.select_wrapper'); 229 var $shipping_interval = $('select[name="plan_shipping_interval"]'); 230 var $bookshelf = $('[name="plan_option_bookshelf"]'); 231 var $b_wrapper = $bookshelf.closest('.select_wrapper'); // åºåãã¨ã®åæ° 232 233 var shipping_intervals = [1, 2, 3, 4, 5, 6]; 234 var library_shipping_intervals = [3, 6]; 235 var age_total_limit = 10; 236 var segment_numbers = { 237 'free': { 238 'age_a': 0, 239 'age_b': 0, 240 'age_c': 0, 241 'english_a': 0, 242 'english_b': 0, 243 'shipping_interval': 1 244 }, 245 'model_a': { 246 'age_a': 3, 247 'age_b': 2, 248 'age_c': 0, 249 'english_a': 0, 250 'english_b': 0, 251 'shipping_interval': 4 252 }, 253 'model_b': { 254 'age_a': 3, 255 'age_b': 3, 256 'age_c': 4, 257 'english_a': 0, 258 'english_b': 0, 259 'shipping_interval': 1 260 }, 261 'library': { 262 'age_a': 0, 263 'age_b': 0, 264 'age_c': 0, 265 'english_a': 0, 266 'english_b': 0, 267 'shipping_interval': 3 268 } 269 }; // åæ°ãã»ãã 270 271 $('input[name="plan"]').on('change', function () { 272 var checked_plan = $('input[name="plan"]:checked').val(); 273 var numbers = segment_numbers[checked_plan]; // ã©ã¤ãã©ãªã¼ãã©ã³ 274 275 var interval_options = ''; 276 277 if (checked_plan == 'library') { 278 $age_fields_wrapper.addClass('disabled');
279 library_shipping_intervals.forEach(function (month) { 280 interval_options += "<option value=\"".concat(month, "\">").concat(month, "</option>"); 281 }); 282 } else { 283 $age_fields_wrapper.removeClass('disabled'); 284 shipping_intervals.forEach(function (month) { 285 interval_options += "<option value=\"".concat(month, "\">").concat(month, "</option>"); 286 }); 287 } 288 289 $shipping_interval.html(interval_options); // åæ°ãã»ãã 290 291 lodash.forEach(numbers, function (value, key) { 292 $("select[name=\"plan_".concat(key, "\"]")).val(value).change(); 293 }); // ããããã¢ãã«è¡¨ç¤ºåæ¿ 294 295 if ($models.prop('checked')) { 296 $models_field.addClass('checked'); 297 } else { 298 $models_field.removeClass('checked'); 299 } 300 }); // åæ°ããªãã¼ã·ã§ã³ (å¹´é½¢åºå ä¸é) 301 302 $age_fields.on('change', function () { 303 var age_count = 0; 304 var $changed_select = $(this); 305 $age_fields.each(function (i, el) { 306 age_count += Number($(el).val()); 307 }); // å¹´é½¢åºå ä¸é 308 309 if (age_count > age_total_limit) { 310 var diff = age_count - age_total_limit; 311 var new_value = $changed_select.val() - diff; 312 $changed_select.val(new_value); 313 var message = "\u300C\u5E74\u9F62\u533A\u5206\u300D\u306E\u7D75\u672C\u306F\u3001\n\u5408\u8A08".concat(age_total_limit, "\u518A\u307E\u3067\u9078\u629E\u3067\u304D\u307E\u3059\u3002"); 314 alert(message); 315 } 316 }); // åæ°ããªãã¼ã·ã§ã³ (å¹´é½¢åºåã»è±èªçµµæ¬ ä¸é) 317 318 $('.form_buttons .edit').on('click', function (event) { 319 var valid = validate_plan_books_count(); 320 }); // ãªã»ãã 321 322 $('.reset').on('click', function () { 323 var message = 'ãã©ã³ã®é¸æå 容ããªã»ãããã¾ãã\nããããã§ããï¼'; 324 325 if (confirm(message)) { 326 $('[name="plan"][value="free"]').trigger('click').prop('checked', false); 327 $('[name^="plan_option_"]').val(0).trigger('change'); 328 } 329 }); // ãã©ã³åæ¿ 330 331 if ($models.prop('checked')) { 332 $models_field.addClass('checked'); 333 } 334 335 $('.plan_fields .plans input').on('click', function () { 336 var name = $(this).attr('name'); 337 var value = $(this).val(); 338 var model_items = ['model_a', 'model_b']; 339 340 if (name == 'plan') { 341 if (model_items.includes(value)) { 342 $models.prop('checked', true); 343 } else { 344 $models.prop('checked', false); 345 } 346 } else if (name == 'plan_models') { 347 var checked_plan = $('input[name="plan"]:checked').val(); 348 349 if (!model_items.includes(checked_plan)) { 350 $plans.prop('checked', false); 351 $('input[name="plan"][value="model_a"]').prop('checked', true).change(); 352 } 353 } 354 }); // æéãè¨ç® 355 356 $('[name^="plan_"]').on('change', function () { 357 $('.price_items').addClass('loading'); 358 }).on('change', lodash.debounce(function () { 359 var param = new FormData(); 360 param.append('plan', $('[name="plan"]:checked').val()); 361 $('[name^="plan_"]').each(function (i, el) { 362 var key = $(el).attr('name').replace('plan_', ''); 363 param.append(key, $(el).val()); 364 }); 365 axios.post(WLR.api + 'plan/calc_price', param).then(function (response) { 366 if (response.status != 200) { 367 return; 368 } 369 370 var data = response.data; // ãè¦ç©ãéé¡ 371 372 var price_items = ['books_count', 'options_total', 'monthly_total', 'initial_total']; 373 price_items.forEach(function (item) { 374 var formatter = new Intl.NumberFormat('ja-JP'); 375 var output = item == 'books_count' ? data[item] : formatter.format(data[item]); 376 $(".price_items .".concat(item)).attr('data-number', output); // signup 377 378 $(".payment_fields .price.".concat(item)).attr('data-number', output); // mypage contract 379 380 $(".page-contract .price_fields .price.".concat(item)).attr('data-number', output); 381 }); // 3Dã»ãã¥ã¢ 382 383 var amount = data['initial_total']; 384 $('[name="payment_credit_amount"]').val(amount); 385 })["catch"](function (error) { 386 console.log(error); 387 }).then(function () { 388 $('.price_items').removeClass('loading'); 389 }); 390 }, 100)); // å¹´é½¢åºåã»äº¤æé »åº¦ãæå夿´æ 391 // ãã©ã³ããèªç±ã«é¸ã¶ãã«å¤æ´ 392 // ã©ã¤ãã©ãªã¼ãã©ã³ã®å ´åã«ã¯äº¤æé »åº¦ã夿´å¯ 393 394 $('[name^="plan_age_"], [name="plan_shipping_interval"]').on('change', function () { 395 var $hover = $('[name^="plan_age_"]:hover, [name="plan_shipping_interval"]:hover'); 396 var $library_checked = $('[name="plan"][value="library"]:checked'); 397 398 if ($hover.length && !$library_checked.length) { 399 $plans.prop('checked', false); 400 $models.prop('checked', false); 401 $models_field.removeClass('checked'); 402 $('[name="plan"][value="free"]').prop('checked', true); 403 } 404 }); 405 } 406 }); 407})(jQuery); 408 409function validate_plan_books_count() { 410 var books_count = 0; 411 var $book_fields = $('select[name^="plan_age_"], select[name^="plan_english_"]'); 412 var checked_plan = $('input[name="plan"]:checked').val(); 413 414 if (checked_plan == null) { 415 return; 416 } 417 418 $book_fields.each(function (i, el) { 419 books_count += Number($(el).val()); 420 });
421 var valid = books_count || checked_plan == 'library'; 422 423 if (!valid) { 424 $('html, body').animate({ 425 scrollTop: 0 426 }, 200); 427 var message = "\u300C\u5E74\u9F62\u533A\u5206\u300D\u300C\u82F1\u8A9E\u7D75\u672C\u300D\n\u5408\u308F\u305B\u30661\u518A\u4EE5\u4E0A\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002"; 428 alert(message); 429 } 430 431 return valid; 432} 433 434(function ($) { 435 $(document).ready(function () { 436 if ($('body').is('.page-signup, .page-payment')) { 437 var init_payment_fields = function init_payment_fields() { 438 $('.payment_credit_fields, .payment_invoice_fields').removeClass('active'); 439 var $credit_items = $('.payment_credit_fields input'); 440 var type = $('[name="payment_type"]:checked').val(); 441 $(".payment_".concat(type, "_fields")).addClass('active'); // ã¯ã¬ã¸ããã«ã¼ã å¿ é é ç® 442 443 if (type == 'credit') { 444 $credit_items.prop('required', true); 445 } else { 446 $credit_items.prop('required', false); 447 } 448 }; 449 450 init_payment_fields(); 451 $('[name="payment_type"]').on('change', init_payment_fields); 452 } 453 }); 454})(jQuery); 455/* 456 * ã«ã¼ãæ å ±ãããã¼ã¯ã³çæ 457 */ 458 459 460function signup_payment_create_token() { 461 CPToken.TokenCreate({ 462 aid: WLR.payment_aid, 463 cn: $('[name="payment_credit_number"]').val(), 464 cvv: $('[name="payment_credit_cvc"]').val(), 465 ed: $('[name="payment_credit_expiration_year"]').val() + $('[name="payment_credit_expiration_month"]').val(), 466 fn: $('[name="payment_credit_first_name"]').val(), 467 ln: $('[name="payment_credit_last_name"]').val() 468 }, signup_payment_auth); 469} 470/* 471 * 3Dã»ãã¥ã¢ 472 */ 473 474 475function signup_payment_auth(result, error) { 476 // ãã¼ã¯ã³çæã«æåããã°èªè¨¼ãå®è¡ 477 if (result == 'Success') { 478 var token = $('[name="payment_credit_token"]').val(); 479 var amount = $('[name="payment_credit_amount"]').val(); 480 ThreeDSAdapter.authenticate({ 481 tkn: token, 482 aid: WLR.payment_aid, 483 am: amount, 484 tx: 0, 485 sf: 0, 486 em: $('[name="email"]').val(), 487 pn: $('[name="tel"]').val() 488 }, signup_payment_submit); 489 } else { 490 // ãã¼ã¯ã³çæã«å¤±æããã°ã¨ã©ã¼è¡¨ç¤º 491 signup_payment_error(error); 492 } 493} 494/* 495 * ã«ã¼ãæ å ±ãããã¼ã¯ã³çæå¾ ãã©ã¼ã ãsubmit 496 */ 497 498 499function signup_payment_submit(result, error) { 500 // æ±ºæ¸æåæ 501 if (result == 'Success') { 502 // ãã¼ã¯ã³ä»¥å¤ã®ã«ã¼ãæ å ±ãã¯ãªã¢ 503 $('[name^="payment_credit_"]:not([name="payment_credit_token"])').val(''); // ã«ã¼ãæ å ±ã®å¿ é 屿§ãå¤ããããªãã¼ã·ã§ã³ãåé¿ 504 505 $('[name^="payment_credit_"]').prop('required', false); // ãã©ã¼ã ãã¼ã¿éä¿¡ 506 507 $('.form_wrapper form').submit(); 508 } else { 509 // 決æ¸å¤±ææ 510 signup_payment_error(error); 511 } 512} 513/* 514 * ãã¼ã¯ã³çæå¤±ææ 515 */ 516 517 518function signup_payment_error(error) { 519 var text = "\u6C7A\u6E08\u30A8\u30E9\u30FC\u3067\u3059\u3002\u30AB\u30FC\u30C9\u60C5\u5831\u3092\u3054\u78BA\u8A8D\u304F\u3060\u3055\u3044\u3002\n\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9 : ".concat(error.code); 520 alert(text); 521} 522 523(function ($) { 524 $(document).ready(function () { 525 if ($('body').hasClass('page-signup')) { 526 $('#next_preview').on('click', function () { 527 var $input_fields = $('.plan_fields, .member_fields, .shipping_fields'); 528 var $preview_fields = $('.preview_plan_fields, .preview_option_fields, .preview_member_fields, .preview_shipping_fields'); 529 var $payment_plans = $('.payment_credit_fields, .payment_invoice_fields').find('td[data-name="plan"]'); // ããã¹ããã£ã¼ã«ã, textarea, select ãã¬ãã¥ã¼ãçæ 530 531 $input_fields.find('input, textarea, select').each(function (i, el) { 532 var el_type = $(el).prop('nodeName').toLowerCase(); 533 var type = $(el).attr('type'); 534 var name = $(el).attr('name'); 535 536 if (['radio', 'checkbox'].includes(type) || name == 'password') { 537 return; 538 } 539 540 var value = el_type == 'select' ? $(el).find('option:selected').text() : $(el).val(); 541 $preview_fields.find("td[data-name=\"".concat(name, "\"]")).attr('data-value', value); 542 }); // radio, checkbox ãã¬ãã¥ã¼ãæ¶å» 543 544 $input_fields.find('[type="radio"], [type="checkbox"]').each(function (i, el) { 545 var name = $(el).attr('name'); 546 $preview_fields.find("td[data-name=\"".concat(name, "\"]")).attr('data-value', ''); 547 }); // radio ãã¬ãã¥ã¼ãçæ 548 549 $input_fields.find('[type="radio"]:checked').each(function (i, el) { 550 var name = $(el).attr('name'); 551 var id = $(el).attr('id'); 552 var label = $("label[for=\"".concat(id, "\"]")).text(); 553 $preview_fields.find("td[data-name=\"".concat(name, "\"]")).attr('data-value', label); 554 555 if (name == 'plan') { 556 $payment_plans.attr('data-value', label); 557 } 558 }); // checkbox ãã¬ãã¥ã¼ãçæ 559 560 var checkbox_values = {}; 561 $input_fields.find('[type="checkbox"]:checked').each(function (i, el) { 562 var name = $(el).attr('name'); 563 var id = $(el).attr('id'); 564 var label = $("label[for=\"".concat(id, "\"]")).text(); 565 566 if (name == null) { 567 return; 568 } 569 570 name = name.replace('[]', ''); 571 572 if (checkbox_values["".concat(name)] == null) { 573 checkbox_values["".concat(name)] = []; 574 } 575 576 checkbox_values["".concat(name)].push(label); 577 });
578 lodash.forEach(checkbox_values, function (values, name) { 579 var labels = values.join(', '); 580 $preview_fields.find("td[data-name=\"".concat(name, "\"]")).attr('data-value', labels); 581 }); // ãå±ãå æ å ± 582 583 var sync = $('#sync_shipping_fields').prop('checked'); 584 var $s_table = $('.preview_shipping_fields_table'); 585 $('#preview_sync_shipping_fields').prop('checked', sync); 586 587 if (sync) { 588 $s_table.removeClass('active'); 589 } else { 590 $s_table.addClass('active'); 591 } 592 }); 593 } 594 }); 595})(jQuery); 596 597(function ($) { 598 $(document).ready(function () { 599 if ($('body').is('.page-signup, .page-payment, .page-mypage')) { 600 /** 601 * ã¨ã©ã¼è¡¨ç¤º 602 * @param boolean scroll 603 */ 604 var validation_show_error = function validation_show_error(scroll) { 605 $('.parsley-errors-list').each(function (i, el) { 606 $(el).closest('tr').find('th').append($(el)); 607 }); 608 $('.form_wrapper th').each(function (i, el) { 609 var list_len = $(el).find('.parsley-errors-list').length; 610 611 if (list_len > 1) { 612 var list_first = $(el).find('.parsley-errors-list:eq(0)'); 613 var list_not_first = $(el).find('.parsley-errors-list:not(:eq(0))'); 614 var list_items = $(el).find('.parsley-errors-list li'); 615 list_first.prepend(list_items); 616 list_not_first.remove(); 617 list_first.html(lodash.uniqBy(list_items.toArray(), function (e) { 618 return e.innerText; 619 })); 620 } 621 }); 622 623 if (scroll) { 624 var offset = $('.parsley-errors-list[aria-hidden="false"]:eq(0)').offset().top - 50; 625 $('html, body').animate({ 626 scrollTop: offset 627 }, 200); 628 } 629 }; 630 /** 631 * ããªãã¼ã·ã§ã³ 632 */ 633 634 635 var elements = 'input, textarea, select'; 636 /** 637 * 屿§ã追å 638 */ 639 640 $('.form_wrapper').find(elements).each(function (i, el) { 641 $(el).attr('data-parsley-trigger', 'blur focusout change'); 642 }); 643 $('.plan_fields').find(elements).each(function (i, el) { 644 $(el).attr('data-parsley-group', 'plan'); 645 }); 646 $('.member_shipping_fields').find(elements).each(function (i, el) { 647 $(el).attr('data-parsley-group', 'member'); 648 }); 649 $('.payment_fields, .payment_credit_fields').find(elements).each(function (i, el) { 650 $(el).attr('data-parsley-group', 'payment'); 651 }); 652 var validation; 653 $('.form_wrapper form').each(function (i, el) { 654 var $form = $(el); 655 656 if ($form.closest('#switch_customer').length) { 657 return; 658 } 659 660 validation = $form.parsley(); 661 validation.on('field:validated', function () { 662 if (!validation.isValid()) { 663 validation_show_error(false); 664 } 665 }); 666 }); 667 /** 668 * ãã¿ã³ ã¯ãªãã¯æ 669 * ãã©ã³ã®é¸æ â ãå®¢æ§æ å ±ã®å ¥å 670 */ 671 672 $('#next_member').on('click', function () { 673 validation.validate({ 674 group: 'plan' 675 }); 676 677 if (validation.isValid({ 678 group: 'plan' 679 })) { 680 if (validate_plan_books_count()) { 681 switch_signup_step('member'); 682 } else { 683 switch_signup_step('plan'); 684 } 685 } else { 686 validation_show_error(true); 687 } 688 }); 689 /** 690 * ãã¿ã³ ã¯ãªãã¯æ 691 * ãå®¢æ§æ å ±ã®å ¥å â ãç³ãè¾¼ã¿å 容ã®ç¢ºèª 692 */ 693 694 $('#next_preview').on('click', function () { 695 validation.validate({ 696 group: 'member' 697 }); 698 699 if (validation.isValid({ 700 group: 'member' 701 })) { 702 if (validate_plan_books_count()) { 703 switch_signup_step('preview'); 704 } else { 705 switch_signup_step('plan'); 706 } 707 } else { 708 validation_show_error(true); 709 } 710 }); 711 /** 712 * ã¯ã¬ã¸ããã«ã¼ãæ±ºæ¸ ç³è¾¼ãã¿ã³ã®ã¯ãªãã¯æ 713 * ããªãã¼ã·ã§ã³ 714 */ 715 716 $('#form_submit').on('click', function (event) { 717 validation.validate({ 718 group: 'payment' 719 }); 720 721 if (validation.isValid({ 722 group: 'payment' 723 })) { 724 // ã¯ã¬ã¸ããæ±ºæ¸ã§ããã°ãã¼ã¯ã³çæçãå®è¡ 725 if ($('[name="payment_type"]:checked').val() == 'credit') { 726 event.preventDefault(); // ã«ã¼ãå義 æåæ°ããªãã¼ã·ã§ã³ 727 728 var fn = $('[name="payment_credit_first_name"]').val(); 729 var ln = $('[name="payment_credit_last_name"]').val(); 730 var name_len = 0 + fn.length + ln.length; 731 732 if (name_len > 44) { 733 alert('ãååã¯åè¨44æå以å ã§å ¥åãã¦ãã ããã'); 734 return; 735 } 736 737 signup_payment_create_token(); 738 } else { 739 $('.form_wrapper form').submit(); 740 } 741 } else { 742 validation_show_error(true); 743 } 744 }); 745 } 746 }); 747})(jQuery); 748 749function switch_signup_step(step) { 750 // body, fields
751 var step_classes = 'step-plan step-member step-preview step-payment step-complete'; 752 $('body').removeClass(step_classes); 753 $('body').addClass("step-".concat(step)); 754 var scroll_position = step == 'member' ? $('#next_member').offset().top - 20 : 0; 755 $('html, body').animate({ 756 scrollTop: scroll_position 757 }, 0); // nav 758 759 $('.signup_steps .step').removeClass('active'); 760 var nav_step = step == 'member' ? 'plan' : step; 761 $(".signup_steps .step-".concat(nav_step)).addClass('active'); 762} 763 764(function ($) { 765 $(document).ready(function () { 766 if ($('body').hasClass('page-signup')) { 767 var input_events = 'focus keyup paste change blur'; // ãã©ã¼ã è¡¨ç¤ºåæ¿ 768 769 $('body').addClass('step-plan'); 770 $('.form_buttons button').on('click', function () { 771 var btn_id = $(this).attr('id'); 772 773 if (btn_id == 'back_plan') { 774 switch_signup_step('plan'); 775 } else if (btn_id == 'back_preview') { 776 switch_signup_step('preview'); 777 } else if (btn_id == 'next_payment') { 778 switch_signup_step('payment'); 779 } 780 }); // ãå±ãå æ å ± è¡¨ç¤ºåæ¿ 781 782 var $sync = $('#sync_shipping_fields'); 783 $sync.on('click', function () { 784 var $table = $('.shipping_fields_table'); 785 786 if ($(this).prop('checked')) { 787 $table.removeClass('active'); 788 } else { 789 $table.addClass('active'); 790 } 791 }); // ãå±ãå æ å ± å ¥åå 容ãåæ 792 793 var sync_fields = function sync_fields() { 794 $('.member_fields input').each(function (i, el) { 795 var $m = $(this); 796 var m_key = $m.attr('name'); 797 var m_val = $m.val(); 798 var $s = $("input[name=\"shipping_".concat(m_key, "\"]")); 799 800 if ($s.length) { 801 $s.val(m_val); 802 } 803 }); 804 }; 805 806 $('.member_fields input').add($sync).on(input_events, function () { 807 if ($sync.prop('checked')) { 808 sync_fields(); 809 } 810 }); // å®ä¼æ¥ãã§ãã¯ããã¯ã¹ 811 812 $('[name="holidays[]"]').on('click change', function () { 813 var $clicked = $(this); 814 var click_checked = $clicked.prop('checked') ? $clicked.val() : null; 815 var weekdays = ['mon', 'tue', 'wed', 'thu', 'fri']; 816 var holidays = []; 817 var weekday_holidays = []; 818 $('[name="holidays[]"]:checked').each(function (i, el) { 819 var val = $(el).val(); 820 holidays.push(val); 821 822 if (weekdays.includes(val)) { 823 weekday_holidays.push(val); 824 } 825 }); 826 827 if (holidays.includes('none')) { 828 if (click_checked == 'none') { 829 // "å®ä¼æ¥ãªã" ã®ã¨ããå ¨ææ¥ã®ãã§ãã¯å¤ã 830 $('[name="holidays[]"]:not([value="none"])').prop('checked', false); 831 } else { 832 // ææ¥ã«ãã§ãã¯ããã° "å®ä¼æ¥ãªã" ã®ãã§ãã¯å¤ã 833 $('[name="holidays[]"][value="none"]').prop('checked', false); 834 } 835 } 836 837 if (weekday_holidays.length >= 5) { 838 // å ¨ææ¥ãã§ãã¯ã¯ä¸å¯ã«ãã 839 $clicked.prop('checked', false); 840 alert('å¹³æ¥ãã¹ã¦ãå®ä¼æ¥ã«ã¯ã§ãã¾ããã'); 841 } 842 }); 843 } 844 }); 845})(jQuery); 846//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGVzL19jb21tb24uanMiLCJmaWxlcy9fZm9ybS5qcyIsImZpbGVzL215cGFnZS5qcyIsImZpbGVzL3BsYW4uanMiLCJmaWxlcy9zaWdudXAtcGF5bWVudC5qcyIsImZpbGVzL3NpZ251cC1wcmV2aWV3LmpzIiwiZmlsZXMvc2lnbnVwLXZhbGlkYXRpb24uanMiLCJmaWxlcy9zaWdudXAuanMiXSwibmFtZXMiOlsid2xyX2FsZXJ0IiwidHlwZSIsIm1lc3NhZ2UiLCJhdXRvX2Nsb3NlIiwidHlwZXMiLCJpbmNsdWRlcyIsInBhcmFtIiwidGl0bGVUZXh0IiwiaHRtbCIsImljb24iLCJjb25maXJtQnV0dG9uVGV4dCIsInRpbWVyIiwiU3dhbCIsImZpcmUiLCIkIiwiZG9jdW1lbnQiLCJyZWFkeSIsImFsZXJ0X2Nvb2tpZSIsIkNvb2tpZXMiLCJnZXQiLCJsZW5ndGgiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwic2V0IiwidGV4dCIsImVhY2giLCJpIiwiZWwiLCJ0IiwicCIsInNpYmxpbmdzIiwib24iLCJ0b2dnbGVDbGFzcyIsImhhc0NsYXNzIiwiYXR0ciIsIndpbmRvdyIsInNldFRpbWVvdXQiLCJ2aCIsImlubmVySGVpZ2h0IiwidnciLCJpbm5lcldpZHRoIiwiZG9jdW1lbnRFbGVtZW50Iiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsImpRdWVyeSIsIndyYXBwZXIiLCJjbG9zZXN0Iiwi
846ZmluZCIsInNldHVwX3Bvc3Rjb2RlX2F1dG9maWxsIiwicG9zdGNvZGVfc2VsZWN0b3IiLCJmaWVsZHNfbWFwcGluZyIsIiRwb3N0Y29kZV9pbnB1dCIsIm9yaWdpbmFsX3Bvc3Rjb2RlIiwiU3RyaW5nIiwiY3VycmVudF92YWx1ZSIsInZhbCIsInRlc3QiLCJZdWJpbkJhbmdvIiwiQ29yZSIsImFkZHIiLCJwcmVmIiwicmVnaW9uIiwiY2l0eSIsImxvY2FsaXR5Iiwic3RyZWV0IiwiaW5wdXRfZXZlbnRzIiwiJHN5bmMiLCIkc2hpcHBpbmdfdGFibGUiLCJwcm9wIiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsInN5bmNfZmllbGRzIiwiJG0iLCJtX2tleSIsIm1fdmFsIiwiJHMiLCJhZGQiLCJzdWJtaXQiLCJzZWxlY3QyIiwicGxhY2Vob2xkZXIiLCJhbGxvd0NsZWFyIiwib25lIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwiZm9yRWFjaCIsIm11dGF0aW9uIiwiJG9wdGlvbiIsInJlcGxhY2UiLCJ0YXJnZXQiLCJxdWVyeVNlbGVjdG9yIiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsImlzIiwidG9nZ2xlX2Zvcm1fYnV0dG9uIiwic3RhdHVzIiwic3RhdHVzX29sZCIsIiRidXR0b25zIiwiJHBsYW5zIiwiJG1vZGVscyIsIiRtb2RlbHNfZmllbGQiLCIkYWdlX2ZpZWxkcyIsIiRhZ2VfZmllbGRzX3dyYXBwZXIiLCIkc2hpcHBpbmdfaW50ZXJ2YWwiLCIkYm9va3NoZWxmIiwiJGJfd3JhcHBlciIsInNoaXBwaW5nX2ludGVydmFscyIsImxpYnJhcnlfc2hpcHBpbmdfaW50ZXJ2YWxzIiwiYWdlX3RvdGFsX2xpbWl0Iiwic2VnbWVudF9udW1iZXJzIiwiY2hlY2tlZF9wbGFuIiwibnVtYmVycyIsImludGVydmFsX29wdGlvbnMiLCJtb250aCIsImxvZGFzaCIsInZhbHVlIiwia2V5IiwiY2hhbmdlIiwiYWdlX2NvdW50IiwiJGNoYW5nZWRfc2VsZWN0IiwiTnVtYmVyIiwiZGlmZiIsIm5ld192YWx1ZSIsImFsZXJ0IiwiZXZlbnQiLCJ2YWxpZCIsInZhbGlkYXRlX3BsYW5fYm9va3NfY291bnQiLCJjb25maXJtIiwidHJpZ2dlciIsIm5hbWUiLCJtb2RlbF9pdGVtcyIsImRlYm91bmNlIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJheGlvcyIsInBvc3QiLCJXTFIiLCJhcGkiLCJ0aGVuIiwicmVzcG9uc2UiLCJwcmljZV9pdGVtcyIsIml0ZW0iLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0Iiwib3V0cHV0IiwiZm9ybWF0IiwiYW1vdW50IiwiZXJyb3IiLCJjb25zb2xlIiwibG9nIiwiJGhvdmVyIiwiJGxpYnJhcnlfY2hlY2tlZCIsImJvb2tzX2NvdW50IiwiJGJvb2tfZmllbGRzIiwiYW5pbWF0ZSIsInNjcm9sbFRvcCIsImluaXRfcGF5bWVudF9maWVsZHMiLCIkY3JlZGl0X2l0ZW1zIiwic2lnbnVwX3BheW1lbnRfY3JlYXRlX3Rva2VuIiwiQ1BUb2tlbiIsIlRva2VuQ3JlYXRlIiwiYWlkIiwicGF5bWVudF9haWQiLCJjbiIsImN2diIsImVkIiwiZm4iLCJsbiIsInNpZ251cF9wYXltZW50X2F1dGgiLCJyZXN1bHQiLCJ0b2tlbiIsIlRocmVlRFNBZGFwdGVyIiwiYXV0aGVudGljYXRlIiwidGtuIiwiYW0iLCJ0eCIsInNmIiwiZW0iLCJwbiIsInNpZ251cF9wYXltZW50X3N1Ym1pdCIsInNpZ251cF9wYXltZW50X2Vycm9yIiwiY29kZSIsIiRpbnB1dF9maWVsZHMiLCIkcHJldmlld19maWVsZHMiLCIkcGF5bWVudF9wbGFucyIsImVsX3R5cGUiLCJ0b0xvd2VyQ2FzZSIsImlkIiwibGFiZWwiLCJjaGVja2JveF92YWx1ZXMiLCJwdXNoIiwidmFsdWVzIiwibGFiZWxzIiwiam9pbiIsInN5bmMiLCIkc190YWJsZSIsInZhbGlkYXRpb25fc2hvd19lcnJvciIsInNjcm9sbCIsImxpc3RfbGVuIiwibGlzdF9maXJzdCIsImxpc3Rfbm90X2ZpcnN0IiwibGlzdF9pdGVtcyIsInByZXBlbmQiLCJyZW1vdmUiLCJ1bmlxQnkiLCJ0b0FycmF5IiwiZSIsImlubmVyVGV4dCIsIm9mZnNldCIsInRvcCIsImVsZW1lbnRzIiwidmFsaWRhdGlvbiIsIiRmb3JtIiwicGFyc2xleSIsImlzVmFsaWQiLCJ2YWxpZGF0ZSIsImdyb3VwIiwic3dpdGNoX3NpZ251cF9zdGVwIiwicHJldmVudERlZmF1bHQiLCJuYW1lX2xlbiIsInN0ZXAiLCJzdGVwX2NsYXNzZXMiLCJzY3JvbGxfcG9zaXRpb24iLCJuYXZfc3RlcCIsImJ0bl9pZCIsIiR0YWJsZSIsIiRjbGlja2VkIiwiY2xpY2tfY2hlY2tlZCIsIndlZWtkYXlzIiwiaG9saWRheXMiLCJ3ZWVrZGF5X2hvbGlkYXlzIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBQUEsU0FBQSxDQUFBQyxJQUFBLEVBQUFDLE9BQUEsRUFBQTtBQUFBLE1BQUFDLFVBQUEsdUVBQUEsSUFBQTtBQUNBLE1BQUFDLEtBQUEsR0FBQSxDQUFBLFNBQUEsRUFBQSxPQUFBLEVBQUEsU0FBQSxFQUFBLE1BQUEsRUFBQSxVQUFBLENBQUE7O0FBQ0EsTUFBQSxDQUFBQSxLQUFBLENBQUFDLFFBQUEsQ0FBQUosSUFBQSxDQUFBLEVBQUE7QUFDQTtBQUNBOztBQUNBLE1BQUFLLEtBQUEsR0FBQTtBQUNBQyxJQUFBQSxTQUFBLEVBQUEsRUFEQTtBQUVBQyxJQUFBQSxJQUFBLEVBQUFOLE9BRkE7QUFHQU8sSUFBQUEsSUFBQSxFQUFBUixJQUhBO0FBSUFTLElBQUFBLGlCQUFBLEVBQUE7QUFKQSxHQUFBOztBQU1BLE1BQUFQLFVBQUEsRUFBQTtBQUNBRyxJQUFBQSxLQUFBLENBQUFLLEtBQUEsR0FBQVIsVUFBQTtBQUNBOztBQUNBUyxFQUFBQSxJQUFBLENBQUFDLElBQUEsQ0FBQVAsS0FBQTtBQUNBOztBQUVBLENBQUEsVUFBQVEsQ0FBQSxFQUFBO0FBRUFBLEVBQUFBLENBQUEsQ0FBQUMsU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QUFDLGdCQUFBLEdBQUEsRUFBQTtBQUNBMU4sUUFBQUEsQ0FBQSxDQUFBLDZCQUFBLENBQUEsQ0FBQVksSUFBQSxDQUFBLFVBQUFDLENBQUEsRUFBQUMsRUFBQSxFQUFBO0FBQ0EsY0FBQTRCLEdBQUEsR0FBQTFDLENBQUEsQ0FBQWMsRUFBQSxDQUFBLENBQUE0QixHQUFBLEVBQUE7QUFDQStLLFVBQUFBLFFBQUEsQ0FBQXZDLElBQUEsQ0FBQXhJLEdBQUE7O0FBQ0EsY0FBQThLLFFBQUEsQ0FBQWpPLFFBQUEsQ0FBQW1ELEdBQUEsQ0FBQSxFQUFBO0FBQ0FnTCxZQUFBQSxnQkFBQSxDQUFBeEMsSUFBQSxDQUFBeEksR0FBQTtBQUNBO0FBQ0EsU0FOQTs7QUFPQSxZQUFBK0ssUUFBQSxDQUFBbE8sUUFBQSxDQUFBLE1BQUEsQ0FBQSxFQUFBO0FBQ0EsY0FBQWdPLGFBQUEsSUFBQSxNQUFBLEVBQUE7QUFDQTtBQUNBdk4sWUFBQUEsQ0FBQSxDQUFBLHlDQUFBLENBQUEsQ0FBQXVELElBQUEsQ0FBQSxTQUFBLEVBQUEsS0FBQTtBQUNBLFdBSEEsTUFHQTtBQUNBO0FBQ0F2RCxZQUFBQSxDQUFBLENBQUEsbUNBQUEsQ0FBQSxDQUFBdUQsSUFBQSxDQUFBLFNBQUEsRUFBQSxLQUFBO0FBQ0E7QUFDQTs7QUFDQSxZQUFBbUssZ0JBQUEsQ0FBQXBOLE1BQUEsSUFBQSxDQUFBLEVBQUE7QUFDQTtBQUNBZ04sVUFBQUEsUUFBQSxDQUFBL0osSUFBQSxDQUFBLFNBQUEsRUFBQSxLQUFBO0FBQ0F1RCxVQUFBQSxLQUFBLENBQUEsbUJBQUEsQ0FBQTtBQUNBO0FBQ0EsT0E1QkE7QUE4QkE7QUFFQSxHQTlFQTtBQStFQSxDQWhGQSxFQWdGQS9FLE1BaEZBIiwiZmlsZSI6InNjcmlwdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog44Ki44Op44O844OIXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gKiBAcGFyYW0ge251bWJlcnxib29sZWFufSBhdXRvX2Nsb3NlXG4gKi9cbmZ1bmN0aW9uIHdscl9hbGVydCh0eXBlLCBtZXNzYWdlLCBhdXRvX2Nsb3NlPTMwMDApIHtcbiAgY29uc3QgdHlwZXMgPSBbJ3N1Y2Nlc3MnLCAnZXJyb3InLCAnd2FybmluZycsICdpbmZvJywgJ3F1ZXN0aW9uJ107XG4gIGlmICghdHlwZXMuaW5jbHVkZXModHlwZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgcGFyYW0gPSB7XG4gICAgdGl0bGVUZXh0OiAnJyxcbiAgICBodG1sOiBtZXNzYWdlLF
846xuICAgIGljb246IHR5cGUsXG4gICAgY29uZmlybUJ1dHRvblRleHQ6ICfplonjgZjjgosnXG4gIH07XG4gIGlmIChhdXRvX2Nsb3NlKSB7XG4gICAgcGFyYW0udGltZXIgPSBhdXRvX2Nsb3NlO1xuICB9XG4gIFN3YWwuZmlyZShwYXJhbSlcbn1cblxuKGZ1bmN0aW9uICgkKSB7XG5cbiAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuXG4gICAgLyoqXG4gICAgICog44Oa44O844K46Kqt6L685pmCIOOCouODqeODvOODiOihqOekulxuICAgICAqL1xuICAgIGNvbnN0IGFsZXJ0X2Nvb2tpZSA9IENvb2tpZXMuZ2V0KCd3bHJfYWxlcnQnKTtcbiAgICBpZiAoYWxlcnRfY29va2llICE9IG51bGwgJiYgYWxlcnRfY29va2llLmxlbmd0aCkge1xuICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoYWxlcnRfY29va2llKTtcbiAgICAgIENvb2tpZXMuc2V0KCd3bHJfYWxlcnQnLCAnJyk7XG4gICAgICBjb25zdCBhdXRvX2Nsb3NlID0gZGF0YS5hdXRvX2Nsb3NlID8gMzAwMCA6IGZhbHNlO1xuICAgICAgd2xyX2FsZXJ0KGRhdGEudHlwZSwgZGF0YS50ZXh0LCBhdXRvX2Nsb3NlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDjg5Hjgrnjg6/jg7zjg4nooajnpLpcbiAgICAgKi9cbiAgICAkKCcudG9nZ2xlX3Bhc3N3b3JkJykuZWFjaChmdW5jdGlvbiAoaSwgZWwpIHtcbiAgICAgIGNvbnN0IHQgPSAkKGVsKTtcbiAgICAgIGNvbnN0IHAgPSAkKGVsKS5zaWJsaW5ncygnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJyk7XG4gICAgICB0Lm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdC50b2dnbGVDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgIGlmICh0Lmhhc0NsYXNzKCdhY3RpdmUnKSkge1xuICAgICAgICAgIHAuYXR0cigndHlwZScsICd0ZXh0Jyk7XG4gICAgICAgIH0gZWxzZXtcbiAgICAgICAgICBwLmF0dHIoJ3R5cGUnLCAncGFzc3dvcmQnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgfSk7XG5cbiAgLyoqXG4gICAqIHZoLCB2d1xuICAgKi9cbiAgJCh3aW5kb3cpLm9uKCdsb2FkIHJlc2l6ZSBvcmllbnRhdGlvbmNoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZoID0gd2luZG93LmlubmVySGVpZ2h0ICogMC4wMTtcbiAgICAgIGNvbnN0IHZ3ID0gd2luZG93LmlubmVyV2lkdGggKiAwLjAxO1xuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXZoJywgYCR7dmh9cHhgKTtcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS12dycsIGAke3Z3fXB4YCk7XG4gICAgfSwgMTUwKTtcbiAgfSk7XG5cbn0pKGpRdWVyeSk7XG4iLCIoZnVuY3Rpb24gKCQpIHtcbiAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuXG4gICAgJCgnLnBhc3N3b3JkX3N3Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd3JhcHBlciA9ICQodGhpcykuY2xvc2VzdCgnLnBhc3N3b3JkX3dyYXBwZXInKTtcbiAgICAgIHdyYXBwZXIudG9nZ2xlQ2xhc3MoJ3Zpc2libGUnKTtcbiAgICAgIGNvbnN0IHR5cGUgPSB3cmFwcGVyLmhhc0NsYXNzKCd2aXNpYmxlJykgPyAndGV4dCcgOiAncGFzc3dvcmQnO1xuICAgICAgd3JhcHBlci5maW5kKCdpbnB1dCcpLmF0dHIoJ3R5cGUnLCB0eXBlKTtcbiAgICB9KTtcblxuICB9KTtcbn0pKGpRdWVyeSk7XG4iLCIoZnVuY3Rpb24gKCQpIHtcbiAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuXG4gICAgaWYgKCQoJ2JvZHknKS5oYXNDbGFzcygncGFnZS1teXBhZ2UnKSkge1xuXG4gICAgICBjb25zdCBpbnB1dF9ldmVudHMgPSAnZm9jdXMga2V5dXAgcGFzdGUgY2hhbmdlIGJsdXInO1xuXG4gICAgICAvLyDjgYrlsYrjgZHlhYjmg4XloLEg6KGo56S65YiH5pu/XG4gICAgICBjb25zdCAkc3luYyA9ICQoJyNzeW5jX3NoaXBwaW5nX2ZpZWxkcycpO1xuICAgICAgY29uc3QgJHNoaXBwaW5nX3RhYmxlID0gJCgnLnNoaXBwaW5nX2ZpZWxkc190YWJsZScpO1xuICAgICAgaWYgKCRzeW5jLnByb3AoJ2NoZWNrZWQnKSkge1xuICAgICAgICAkc2hpcHBpbmdfdGFibGUucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJHNoaXBwaW5nX3RhYmxlLmFkZENsYXNzKCdhY3RpdmUnKTtcbiAgICAgIH1cbiAgICAgICRzeW5jLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCQodGhpcykucHJvcCgnY2hlY2tlZCcpKSB7XG4gICAgICAgICAgJHNoaXBwaW5nX3RhYmxlLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAkc2hpcHBpbmdfdGFibGUuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIOOBiuWxiuOBkeWFiOaDheWgsSDlhaXlipvlhoXlrrnjgpLlkIzmnJ9cbiAgICAgIGNvbnN0IHN5bmNfZmllbGRzID0gKCkgPT4ge1xuICAgICAgICAkKCcubWVtYmVyX2ZpZWxkcyBpbnB1dCcpLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7XG4gICAgICAgICAgY29uc3QgJG0gPSAkKHRoaXMpO1xuICAgICAgICAgIGNvbnN0IG1fa2V5ID0gJG0uYXR0cignbmFtZScpO1xuICAgICAgICAgIGNvbnN0IG1fdmFsID0gJG0udmFsKCk7XG4gICAgICAgICAgY29uc3QgJHMgPSAkKGBpbnB1dFtuYW1lPVwic2hpcHBpbmdfJHttX2tleX1cIl1gKTtcbiAgICAgICAgICBpZiAoJHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAkcy52YWwobV92YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgJCgnLm1lbWJlcl9maWVsZHMgaW5wdXQnKS5hZGQoJHN5bmMpLm9uKGlucHV0X2V2ZW50cywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoJHN5bmMucHJvcCgnY2hlY2tlZCcpKSB7XG4gICAgICAgICAgc3luY19maWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIOmDteS+v+eVquWPt+WkieabtOaZguOBruS9j+aJgOiHquWLleWFpeWKm+WItuW+oVxuICAgICAgZnVuY3Rpb24gc2V0dXBfcG9zdGNvZGVfYXV0b2ZpbGwocG9zdGNvZGVfc2VsZWN0b3IsIGZpZWxkc19tYXBwaW5nKSB7XG4gICAgICAgIGNvbnN0ICRwb3N0Y29kZV9pbnB1dCA9ICQocG9zdGNvZGVfc2VsZWN0b3IpO1xuICAgICAgICBpZiAoJHBvc3Rjb2RlX2lucHV0Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsX3Bvc3Rjb2RlID0gU3RyaW5nKCRwb3N0Y29kZV9pbnB1dC5kYXRhKCdvcmlnaW5hbC12YWx1ZScpIHx8ICcnKTtcbiAgICAgICAgICAkcG9zdGNvZGVfaW5wdXQub24oJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudF92YWx1ZSA9IFN0cmluZygkKHRoaXMpLnZhbCgpKTtcbiAgICAgICAgICAgIC8vIDfmoYHjga7mlbDlrZfjgYzlhaXlipvjgZXjgozjgIHjgYvjgaTlhYPjga7lgKTjgajnlbDjgarjgovloLTlkIhcbiAgICAgICAgICAgIGlmICgvXlswLTldezd9JC8udGVzdChjdXJyZW50X3ZhbHVlKSAmJiAoY3VycmVudF92YWx1ZSAhPT0gb3JpZ2luYWxfcG9zdGNvZGUpKSB7XG4gICAgICAgICAgICAgIC8vIFl1YmluQmFuZ28uQ29yZeOCkuebtOaOpeWRvOOBs+WHuuOBl+OBpuS9j+aJgOOCkuWPluW+l1xuICAgICAgICAgICAgICBuZXcgWXViaW5CYW5nby5Db3JlKGN1cnJlbnRfdmFsdWUsIGZ1bmN0aW9uIChhZGRyKSB7XG4gICAgICAgICAgICAgICAgLy8g5L2P5omA44OV44Kj44O844Or44OJ44Gr5YCk44KS6Kit5a6aXG4gICAgICAgICAgICAgICAgJChmaWVsZHNfbWFwcGluZy5wcmVmKS52YWwoYWRkci5yZWdpb24pO1xuICAgICAgICAgICAgICAgICQoZmllbGRzX21hcHBpbmcuY2l0eSkudmFsKGFkZHIubG9jYWxpdHkpO1xuICAgICAgICAgICAgICAgICQoZmllbGRzX21hcHBpbmcuc3RyZWV0KS52YWwoYWRkci5zdHJlZXQpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgI
846H1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8g5Lya5ZOh5oOF5aCx44Gu6YO15L6/55Wq5Y+3XG4gICAgICBzZXR1cF9wb3N0Y29kZV9hdXRvZmlsbCgnaW5wdXRbbmFtZT1cInBvc3Rjb2RlXCJdJywge1xuICAgICAgICBwcmVmICA6ICdpbnB1dFtuYW1lPVwiYWRkcmVzc19wcmVmXCJdJyxcbiAgICAgICAgY2l0eSAgOiAnaW5wdXRbbmFtZT1cImFkZHJlc3NfY2l0eVwiXScsXG4gICAgICAgIHN0cmVldDogJ2lucHV0W25hbWU9XCJhZGRyZXNzMVwiXSdcbiAgICAgIH0pO1xuICAgICAgLy8g44GK5bGK44GR5YWI5oOF5aCx44Gu6YO15L6/55Wq5Y+3XG4gICAgICBzZXR1cF9wb3N0Y29kZV9hdXRvZmlsbCgnaW5wdXRbbmFtZT1cInNoaXBwaW5nX3Bvc3Rjb2RlXCJdJywge1xuICAgICAgICBwcmVmICA6ICdpbnB1dFtuYW1lPVwic2hpcHBpbmdfYWRkcmVzc19wcmVmXCJdJyxcbiAgICAgICAgY2l0eSAgOiAnaW5wdXRbbmFtZT1cInNoaXBwaW5nX2FkZHJlc3NfY2l0eVwiXScsXG4gICAgICAgIHN0cmVldDogJ2lucHV0W25hbWU9XCJzaGlwcGluZ19hZGRyZXNzMVwiXSdcbiAgICAgIH0pO1xuXG4gICAgICAvLyBzdWJtaXRcbiAgICAgICQoJy5mb3JtX2J1dHRvbnMgLmVkaXQnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICQodGhpcykuY2xvc2VzdCgnZm9ybScpLnN1Ym1pdCgpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIOe3qOmbhuWvvuixoeOBrumhp+WuouOCkumBuOaKnlxuICAgICAgJCgnLnN3aXRjaF9jdXN0b21lciBzZWxlY3QnKS5zZWxlY3QyKHtcbiAgICAgICAgcGxhY2Vob2xkZXI6ICfnt6jpm4blr77osaHjga7poaflrqLjgpLpgbjmip4nLFxuICAgICAgICBhbGxvd0NsZWFyOiBmYWxzZVxuICAgICAgfSkub25lKCdzZWxlY3QyOm9wZW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICQoJy5zZWxlY3QyLXNlYXJjaF9fZmllbGQnKS5hdHRyKCdwbGFjZWhvbGRlcicsICfpoaflrqLlkI3jg7vjg6Hjg7zjg6vjg7vlj5blvJXlhYjjgrPjg7zjg4njg7vpm7voqbHnlarlj7cg44KS5YWl5YqbJyk7XG4gICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKG11dGF0aW9ucykge1xuICAgICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChtdXRhdGlvbikge1xuICAgICAgICAgICAgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgICAgICQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbicpLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgJG9wdGlvbiA9ICQoZWwpO1xuICAgICAgICAgICAgICAgIGlmICgkb3B0aW9uLmhhc0NsYXNzKCdtdWx0aWxpbmUnKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gJG9wdGlvbi50ZXh0KCkucmVwbGFjZSgv44CAL2csICc8YnI+Jyk7XG4gICAgICAgICAgICAgICAgJG9wdGlvbi5odG1sKHRleHQpO1xuICAgICAgICAgICAgICAgICRvcHRpb24uYWRkQ2xhc3MoJ211bHRpbGluZScpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMnKTtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQsIHtcbiAgICAgICAgICBjaGlsZExpc3Q6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIH1cblxuICAgIC8vIOWlkee0hOOCueODhuODvOOCv+OCuVxuICAgIGlmICgkKCdib2R5JykuaXMoJy5wYWdlLW15cGFnZS1jaGlsZC5wYWdlLXN0YXR1cycpKSB7XG4gICAgICB0b2dnbGVfZm9ybV9idXR0b24oKTtcbiAgICAgICQoJ1tuYW1lPVwic3RhdHVzXCJdJykub24oJ2NoYW5nZScsIHRvZ2dsZV9mb3JtX2J1dHRvbik7XG4gICAgICBmdW5jdGlvbiB0b2dnbGVfZm9ybV9idXR0b24oKSB7XG4gICAgICAgIGNvbnN0IHN0YXR1cyAgICAgPSAkKCdbbmFtZT1cInN0YXR1c1wiXScpLnZhbCgpO1xuICAgICAgICBjb25zdCBzdGF0dXNfb2xkID0gJCgnW25hbWU9XCJzdGF0dXNfb2xkXCJdJykudmFsKCk7XG4gICAgICAgIGNvbnN0ICRidXR0b25zICAgPSAkKCcuZm9ybV9idXR0b25zJyk7XG4gICAgICAgIGlmIChzdGF0dXMgPT0gc3RhdHVzX29sZCkge1xuICAgICAgICAgICRidXR0b25zLmFkZENsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICRidXR0b25zLnJlbW92ZUNsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gIH0pO1xufSkoalF1ZXJ5KTtcbiIsIihmdW5jdGlvbiAoJCkge1xuICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG5cbiAgICAvKipcbiAgICAgKiDjg5fjg6njg7Ppgbjmip5cbiAgICAgKi9cbiAgICBpZiAoJCgnLnBsYW5fZmllbGRzJykubGVuZ3RoKSB7XG4gICAgICAvLyDopoHntKBcbiAgICAgIGNvbnN0ICRwbGFucyAgICAgICAgICAgICAgPSAkKCdpbnB1dFtuYW1lPVwicGxhblwiXScpO1xuICAgICAgY29uc3QgJG1vZGVscyAgICAgICAgICAgICA9ICQoJyNwbGFuX21vZGVscycpO1xuICAgICAgY29uc3QgJG1vZGVsc19maWVsZCAgICAgICA9ICRtb2RlbHMuY2xvc2VzdCgnLmZpZWxkJyk7XG4gICAgICBjb25zdCAkYWdlX2ZpZWxkcyAgICAgICAgID0gJCgnc2VsZWN0W25hbWVePVwicGxhbl9hZ2VfXCJdJyk7XG4gICAgICBjb25zdCAkYWdlX2ZpZWxkc193cmFwcGVyID0gJGFnZV9maWVsZHMuY2xvc2VzdCgnLnNlbGVjdF93cmFwcGVyJyk7XG4gICAgICBjb25zdCAkc2hpcHBpbmdfaW50ZXJ2YWwgID0gJCgnc2VsZWN0W25hbWU9XCJwbGFuX3NoaXBwaW5nX2ludGVydmFsXCJdJyk7XG4gICAgICBjb25zdCAkYm9va3NoZWxmICAgICAgICAgID0gJCgnW25hbWU9XCJwbGFuX29wdGlvbl9ib29rc2hlbGZcIl0nKTtcbiAgICAgIGNvbnN0ICRiX3dyYXBwZXIgICAgICAgICAgPSAkYm9va3NoZWxmLmNsb3Nlc3QoJy5zZWxlY3Rfd3JhcHBlcicpO1xuICAgICAgLy8g5Yy65YiG44GU44Go44Gu5YaK5pWwXG4gICAgICBjb25zdCBzaGlwcGluZ19pbnRlcnZhbHMgICAgICAgICA9IFsxLCAyLCAzLCA0LCA1LCA2XTtcbiAgICAgIGNvbnN0IGxpYnJhcnlfc2hpcHBpbmdfaW50ZXJ2YWxzID0gWzMsIDZdO1xuICAgICAgY29uc3QgYWdlX3RvdGFsX2xpbWl0ID0gMTA7XG4gICAgICBjb25zdCBzZWdtZW50X251bWJlcnMgPSB7XG4gICAgICAgICdmcmVlJyA6IHtcbiAgICAgICAgICAnYWdlX2EnICAgICAgICAgICAgOiAwLFxuICAgICAgICAgICdhZ2VfYicgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgJ2FnZV9jJyAgICAgICAgICAgIDogMCxcbiAgICAgICAgICAnZW5nbGlzaF9hJyAgICAgICAgOiAwLFxuICAgICAgICAgICdlbmdsaXNoX2InICAgICAgICA6IDAsXG4gICAgICAgICAgJ3NoaXBwaW5nX2ludGVydmFsJzogMVxuICAgICAgICB9LFxuICAgICAgICAnbW9kZWxfYScgOiB7XG4gICAgICAgICAgJ2FnZV9hJyAgICAgICAgICAgIDogMyxcbiAgICAgICAgICAnYWdlX2InICAgICAgICAgICAgOiAyLFxuICAgICAgICAgICdhZ2VfYycgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgJ2VuZ2xpc2hfYScgICAgICAgIDogMCxcbiAgICAgICAgICAnZW5nbGlzaF9iJyAgICAgICAgOiAwLFxuICAgICAgICAgICdzaGlwcGluZ19pbnRlcnZhbCc6IDRcbiAgICAgICAgfSxcbiAgICAgICAgJ21vZGVsX2InIDoge1xuICAgICAgICAgICdhZ2VfYScgICAgICAgICAgICA6IDMsXG4gICAgICAgICAgJ2FnZV9iJyAgICAgICAgICAgIDogMyxcbiAgICAgICAgICAnYWdlX2MnICAgICAgICAgICAgOiA0LFxuICAgICAgICAgICdlbmdsaXNoX2EnICAgICAgICA6IDAsXG4gICAgICAgICAgJ2VuZ2xpc2hfYicgICAgICAgIDogMCxcbiAgICAgICAgICAnc2hpcHBpbmdfaW50ZXJ2YWwnOiAxXG4gICAgICAgI
846H0sXG4gICAgICAgICdsaWJyYXJ5JyA6IHtcbiAgICAgICAgICAnYWdlX2EnICAgICAgICAgICAgOiAwLFxuICAgICAgICAgICdhZ2VfYicgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgJ2FnZV9jJyAgICAgICAgICAgIDogMCxcbiAgICAgICAgICAnZW5nbGlzaF9hJyAgICAgICAgOiAwLFxuICAgICAgICAgICdlbmdsaXNoX2InICAgICAgICA6IDAsXG4gICAgICAgICAgJ3NoaXBwaW5nX2ludGVydmFsJzogM1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIC8vIOWGiuaVsOOCkuOCu+ODg+ODiFxuICAgICAgJCgnaW5wdXRbbmFtZT1cInBsYW5cIl0nKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBjaGVja2VkX3BsYW4gPSAkKCdpbnB1dFtuYW1lPVwicGxhblwiXTpjaGVja2VkJykudmFsKCk7XG4gICAgICAgIGNvbnN0IG51bWJlcnMgPSBzZWdtZW50X251bWJlcnNbY2hlY2tlZF9wbGFuXTtcbiAgICAgICAgLy8g44Op44Kk44OW44Op44Oq44O844OX44Op44OzXG4gICAgICAgIGxldCBpbnRlcnZhbF9vcHRpb25zID0gJyc7XG4gICAgICAgIGlmIChjaGVja2VkX3BsYW4gPT0gJ2xpYnJhcnknKSB7XG4gICAgICAgICAgJGFnZV9maWVsZHNfd3JhcHBlci5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgICBsaWJyYXJ5X3NoaXBwaW5nX2ludGVydmFscy5mb3JFYWNoKG1vbnRoID0+IHtcbiAgICAgICAgICAgIGludGVydmFsX29wdGlvbnMgKz0gYDxvcHRpb24gdmFsdWU9XCIke21vbnRofVwiPiR7bW9udGh9PC9vcHRpb24+YDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAkYWdlX2ZpZWxkc193cmFwcGVyLnJlbW92ZUNsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgICAgIHNoaXBwaW5nX2ludGVydmFscy5mb3JFYWNoKG1vbnRoID0+IHtcbiAgICAgICAgICAgIGludGVydmFsX29wdGlvbnMgKz0gYDxvcHRpb24gdmFsdWU9XCIke21vbnRofVwiPiR7bW9udGh9PC9vcHRpb24+YDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAkc2hpcHBpbmdfaW50ZXJ2YWwuaHRtbChpbnRlcnZhbF9vcHRpb25zKTtcbiAgICAgICAgLy8g5YaK5pWw44KS44K744OD44OIXG4gICAgICAgIGxvZGFzaC5mb3JFYWNoKG51bWJlcnMsIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICAkKGBzZWxlY3RbbmFtZT1cInBsYW5fJHtrZXl9XCJdYCkudmFsKHZhbHVlKS5jaGFuZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIOOBiuOBmeOBmeOCgeODouODh+ODq+ihqOekuuWIh+abv1xuICAgICAgICBpZiAoJG1vZGVscy5wcm9wKCdjaGVja2VkJykpIHtcbiAgICAgICAgICAkbW9kZWxzX2ZpZWxkLmFkZENsYXNzKCdjaGVja2VkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgJG1vZGVsc19maWVsZC5yZW1vdmVDbGFzcygnY2hlY2tlZCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIOWGiuaVsOODkOODquODh+ODvOOCt+ODp+ODsyAo5bm06b2i5Yy65YiGIOS4iumZkClcbiAgICAgICRhZ2VfZmllbGRzLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBhZ2VfY291bnQgID0gMDtcbiAgICAgICAgY29uc3QgJGNoYW5nZWRfc2VsZWN0ID0gJCh0aGlzKTtcbiAgICAgICAgJGFnZV9maWVsZHMuZWFjaChmdW5jdGlvbiAoaSwgZWwpIHtcbiAgICAgICAgICBhZ2VfY291bnQgKz0gTnVtYmVyKCQoZWwpLnZhbCgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIOW5tOm9ouWMuuWIhiDkuIrpmZBcbiAgICAgICAgaWYgKGFnZV9jb3VudCA+IGFnZV90b3RhbF9saW1pdCkge1xuICAgICAgICAgIGNvbnN0IGRpZmYgPSAoYWdlX2NvdW50IC0gYWdlX3RvdGFsX2xpbWl0KTtcbiAgICAgICAgICBjb25zdCBuZXdfdmFsdWUgPSAoJGNoYW5nZWRfc2VsZWN0LnZhbCgpIC0gZGlmZik7XG4gICAgICAgICAgJGNoYW5nZWRfc2VsZWN0LnZhbChuZXdfdmFsdWUpO1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBg44CM5bm06b2i5Yy65YiG44CN44Gu57W15pys44Gv44CBXFxu5ZCI6KiIJHthZ2VfdG90YWxfbGltaXR95YaK44G+44Gn6YG45oqe44Gn44GN44G+44GZ44CCYDtcbiAgICAgICAgICBhbGVydChtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyDlhormlbDjg5Djg6rjg4fjg7zjgrfjg6fjg7MgKOW5tOm9ouWMuuWIhuODu+iLseiqnue1teacrCDkuIvpmZApXG4gICAgICAkKCcuZm9ybV9idXR0b25zIC5lZGl0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHZhbGlkID0gdmFsaWRhdGVfcGxhbl9ib29rc19jb3VudCgpO1xuICAgICAgfSk7XG4gICAgICAvLyDjg6rjgrvjg4Pjg4hcbiAgICAgICQoJy5yZXNldCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9ICfjg5fjg6njg7Pjga7pgbjmip7lhoXlrrnjgpLjg6rjgrvjg4Pjg4jjgZfjgb7jgZnjgIJcXG7jgojjgo3jgZfjgYTjgafjgZnjgYvvvJ8nO1xuICAgICAgICBpZiAoY29uZmlybShtZXNzYWdlKSkge1xuICAgICAgICAgICQoJ1tuYW1lPVwicGxhblwiXVt2YWx1ZT1cImZyZWVcIl0nKS50cmlnZ2VyKCdjbGljaycpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG4gICAgICAgICAgJCgnW25hbWVePVwicGxhbl9vcHRpb25fXCJdJykudmFsKDApLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIOODl+ODqeODs+WIh+abv1xuICAgICAgaWYgKCRtb2RlbHMucHJvcCgnY2hlY2tlZCcpKSB7XG4gICAgICAgICRtb2RlbHNfZmllbGQuYWRkQ2xhc3MoJ2NoZWNrZWQnKTtcbiAgICAgIH1cbiAgICAgICQoJy5wbGFuX2ZpZWxkcyAucGxhbnMgaW5wdXQnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgICAgPSAkKHRoaXMpLmF0dHIoJ25hbWUnKTtcbiAgICAgICAgY29uc3QgdmFsdWUgICA9ICQodGhpcykudmFsKCk7XG4gICAgICAgIGNvbnN0IG1vZGVsX2l0ZW1zID0gWydtb2RlbF9hJywgJ21vZGVsX2InXTtcbiAgICAgICAgaWYgKG5hbWUgPT0gJ3BsYW4nKSB7XG4gICAgICAgICAgaWYgKG1vZGVsX2l0ZW1zLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgJG1vZGVscy5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICRtb2RlbHMucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgI
846H0gZWxzZSBpZiAobmFtZSA9PSAncGxhbl9tb2RlbHMnKSB7XG4gICAgICAgICAgY29uc3QgY2hlY2tlZF9wbGFuID0gJCgnaW5wdXRbbmFtZT1cInBsYW5cIl06Y2hlY2tlZCcpLnZhbCgpO1xuICAgICAgICAgIGlmICghbW9kZWxfaXRlbXMuaW5jbHVkZXMoY2hlY2tlZF9wbGFuKSkge1xuICAgICAgICAgICAgJHBsYW5zLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAkKCdpbnB1dFtuYW1lPVwicGxhblwiXVt2YWx1ZT1cIm1vZGVsX2FcIl0nKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSkuY2hhbmdlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIOaWmemHkeOCkuioiOeul1xuICAgICAgJCgnW25hbWVePVwicGxhbl9cIl0nKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAkKCcucHJpY2VfaXRlbXMnKS5hZGRDbGFzcygnbG9hZGluZycpO1xuICAgICAgfSkub24oJ2NoYW5nZScsIGxvZGFzaC5kZWJvdW5jZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIHBhcmFtLmFwcGVuZCgncGxhbicsICQoJ1tuYW1lPVwicGxhblwiXTpjaGVja2VkJykudmFsKCkpO1xuICAgICAgICAkKCdbbmFtZV49XCJwbGFuX1wiXScpLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gJChlbCkuYXR0cignbmFtZScpLnJlcGxhY2UoJ3BsYW5fJywgJycpO1xuICAgICAgICAgIHBhcmFtLmFwcGVuZChrZXksICQoZWwpLnZhbCgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGF4aW9zLnBvc3QoV0xSLmFwaSArICdwbGFuL2NhbGNfcHJpY2UnLCBwYXJhbSlcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT0gMjAwKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgLy8g44GK6KaL56mN44KK6YeR6aGNXG4gICAgICAgICAgICBjb25zdCBwcmljZV9pdGVtcyA9IFsnYm9va3NfY291bnQnLCAnb3B0aW9uc190b3RhbCcsICdtb250aGx5X3RvdGFsJywgJ2luaXRpYWxfdG90YWwnXTtcbiAgICAgICAgICAgIHByaWNlX2l0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgnamEtSlAnKTtcbiAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gKGl0ZW0gPT0gJ2Jvb2tzX2NvdW50JykgPyBkYXRhW2l0ZW1dIDogZm9ybWF0dGVyLmZvcm1hdChkYXRhW2l0ZW1dKTtcbiAgICAgICAgICAgICAgJChgLnByaWNlX2l0ZW1zIC4ke2l0ZW19YCkuYXR0cignZGF0YS1udW1iZXInLCBvdXRwdXQpO1xuICAgICAgICAgICAgICAvLyBzaWdudXBcbiAgICAgICAgICAgICAgJChgLnBheW1lbnRfZmllbGRzIC5wcmljZS4ke2l0ZW19YCkuYXR0cignZGF0YS1udW1iZXInLCBvdXRwdXQpO1xuICAgICAgICAgICAgICAvLyBteXBhZ2UgY29udHJhY3RcbiAgICAgICAgICAgICAgJChgLnBhZ2UtY29udHJhY3QgLnByaWNlX2ZpZWxkcyAucHJpY2UuJHtpdGVtfWApLmF0dHIoJ2RhdGEtbnVtYmVyJywgb3V0cHV0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gM0Tjgrvjgq3jg6XjgqJcbiAgICAgICAgICAgIGNvbnN0IGFtb3VudCA9IGRhdGFbJ2luaXRpYWxfdG90YWwnXTtcbiAgICAgICAgICAgICQoJ1tuYW1lPVwicGF5bWVudF9jcmVkaXRfYW1vdW50XCJdJykudmFsKGFtb3VudCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAkKCcucHJpY2VfaXRlbXMnKS5yZW1vdmVDbGFzcygnbG9hZGluZycpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSwgMTAwKSk7XG4gICAgICAvLyDlubTpvaLljLrliIbjg7vkuqTmj5vpoLvluqbjgpLmiYvli5XlpInmm7TmmYJcbiAgICAgIC8vIOODl+ODqeODs+OCkuOAjOiHqueUseOBq+mBuOOBtuOAjeOBq+WkieabtFxuICAgICAgLy8g44Op44Kk44OW44Op44Oq44O844OX44Op44Oz44Gu5aC05ZCI44Gr44Gv5Lqk5o+b6aC75bqm44KS5aSJ5pu05Y+vXG4gICAgICAkKCdbbmFtZV49XCJwbGFuX2FnZV9cIl0sIFtuYW1lPVwicGxhbl9zaGlwcGluZ19pbnRlcnZhbFwiXScpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0ICRob3ZlciA9ICQoJ1tuYW1lXj1cInBsYW5fYWdlX1wiXTpob3ZlciwgW25hbWU9XCJwbGFuX3NoaXBwaW5nX2ludGVydmFsXCJdOmhvdmVyJyk7XG4gICAgICAgIGNvbnN0ICRsaWJyYXJ5X2NoZWNrZWQgPSAkKCdbbmFtZT1cInBsYW5cIl1bdmFsdWU9XCJsaWJyYXJ5XCJdOmNoZWNrZWQnKTtcbiAgICAgICAgaWYgKCRob3Zlci5sZW5ndGggJiYgISRsaWJyYXJ5X2NoZWNrZWQubGVuZ3RoKSB7XG4gICAgICAgICAgJHBsYW5zLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG4gICAgICAgICAgJG1vZGVscy5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuICAgICAgICAgICRtb2RlbHNfZmllbGQucmVtb3ZlQ2xhc3MoJ2NoZWNrZWQnKTtcbiAgICAgICAgICAkKCdbbmFtZT1cInBsYW5cIl1bdmFsdWU9XCJmcmVlXCJdJykucHJvcCgnY2hlY2tlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgfSk7XG59KShqUXVlcnkpO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZV9wbGFuX2Jvb2tzX2NvdW50KCkge1xuICBsZXQgYm9va3NfY291bnQgPSAwO1xuICBjb25zdCAkYm9va19maWVsZHMgPSAkKCdzZWxlY3RbbmFtZV49XCJwbGFuX2FnZV9cIl0sIHNlbGVjdFtuYW1lXj1cInBsYW5fZW5nbGlzaF9cIl0nKTtcbiAgY29uc3QgY2hlY2tlZF9wbGFuID0gJCgnaW5wdXRbbmFtZT1cInBsYW5cIl06Y2hlY2tlZCcpLnZhbCgpO1xuICBpZiAoY2hlY2tlZF9wbGFuID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgJGJvb2tfZmllbGRzLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7XG4gICAgYm9va3NfY291bnQgKz0gTnVtYmVyKCQoZWwpLnZhbCgpKTtcbiAgfSk7XG4gIGNvbnN0IHZhbGlkID0gKGJvb2tzX2NvdW50IHx8IChjaGVja2VkX3BsYW4gPT0gJ2xpYnJhcnknKSlcbiAgaWYgKCF2YWxpZCkge1xuICAgICQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHtzY3JvbGxUb3A6IDB9LCAyMDApO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBg44CM5bm06b2i5Yy65YiG44CN44CM6Iux6Kqe57W15pys44CNXFxu5ZCI44KP44Gb44GmMeWGiuS7peS4iumBuOaKnuOBl+OBpuOBj+OBoOOBleOBhOOAgmA7XG4gICAgYWxlcnQobWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIHZhbGlkO1xufVxuIiwiKGZ1bmN0aW9uICgkKSB7XG4gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcblxuICAgIGlmICgkKCdib2R5JykuaXMoJy5wYWdlLXNpZ251cCwgLnBhZ2UtcGF5bWVudCcpKSB7XG5cbiAgICAgIGluaXRf
846cGF5bWVudF9maWVsZHMoKTtcbiAgICAgICQoJ1tuYW1lPVwicGF5bWVudF90eXBlXCJdJykub24oJ2NoYW5nZScsIGluaXRfcGF5bWVudF9maWVsZHMpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0X3BheW1lbnRfZmllbGRzKCkge1xuICAgICAgICAkKCcucGF5bWVudF9jcmVkaXRfZmllbGRzLCAucGF5bWVudF9pbnZvaWNlX2ZpZWxkcycpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgY29uc3QgJGNyZWRpdF9pdGVtcyA9ICQoJy5wYXltZW50X2NyZWRpdF9maWVsZHMgaW5wdXQnKTtcbiAgICAgICAgY29uc3QgdHlwZSA9ICQoJ1tuYW1lPVwicGF5bWVudF90eXBlXCJdOmNoZWNrZWQnKS52YWwoKTtcbiAgICAgICAgJChgLnBheW1lbnRfJHt0eXBlfV9maWVsZHNgKS5hZGRDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgIC8vIOOCr+ODrOOCuOODg+ODiOOCq+ODvOODiSDlv4XpoIjpoIXnm65cbiAgICAgICAgaWYgKHR5cGUgPT0gJ2NyZWRpdCcpIHtcbiAgICAgICAgICAkY3JlZGl0X2l0ZW1zLnByb3AoJ3JlcXVpcmVkJywgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgJGNyZWRpdF9pdGVtcy5wcm9wKCdyZXF1aXJlZCcsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuXG4gIH0pO1xufSkoalF1ZXJ5KTtcblxuLypcbiAqIOOCq+ODvOODieaDheWgseOBi+OCieODiOODvOOCr+ODs+eUn+aIkFxuICovXG5mdW5jdGlvbiBzaWdudXBfcGF5bWVudF9jcmVhdGVfdG9rZW4oKSB7XG4gIENQVG9rZW4uVG9rZW5DcmVhdGUoe1xuICAgIGFpZDogV0xSLnBheW1lbnRfYWlkLFxuICAgIGNuOiAgJCgnW25hbWU9XCJwYXltZW50X2NyZWRpdF9udW1iZXJcIl0nKS52YWwoKSxcbiAgICBjdnY6ICQoJ1tuYW1lPVwicGF5bWVudF9jcmVkaXRfY3ZjXCJdJykudmFsKCksXG4gICAgZWQ6ICAkKCdbbmFtZT1cInBheW1lbnRfY3JlZGl0X2V4cGlyYXRpb25feWVhclwiXScpLnZhbCgpXG4gICAgICAgKyAkKCdbbmFtZT1cInBheW1lbnRfY3JlZGl0X2V4cGlyYXRpb25fbW9udGhcIl0nKS52YWwoKSxcbiAgICBmbjogICQoJ1tuYW1lPVwicGF5bWVudF9jcmVkaXRfZmlyc3RfbmFtZVwiXScpLnZhbCgpLFxuICAgIGxuOiAgJCgnW25hbWU9XCJwYXltZW50X2NyZWRpdF9sYXN0X25hbWVcIl0nKS52YWwoKVxuICB9LCBzaWdudXBfcGF5bWVudF9hdXRoKTtcbn1cblxuLypcbiAqIDNE44K744Kt44Ol44KiXG4gKi9cbmZ1bmN0aW9uIHNpZ251cF9wYXltZW50X2F1dGgocmVzdWx0LCBlcnJvcikge1xuICAvLyDjg4jjg7zjgq/jg7PnlJ/miJDjgavmiJDlip/jgZnjgozjgbDoqo3oqLzjgpLlrp/ooYxcbiAgaWYgKHJlc3VsdCA9PSAnU3VjY2VzcycpIHtcbiAgICBjb25zdCB0b2tlbiAgPSAkKCdbbmFtZT1cInBheW1lbnRfY3JlZGl0X3Rva2VuXCJdJykudmFsKCk7XG4gICAgY29uc3QgYW1vdW50ID0gJCgnW25hbWU9XCJwYXltZW50X2NyZWRpdF9hbW91bnRcIl0nKS52YWwoKTtcbiAgICBUaHJlZURTQWRhcHRlci5hdXRoZW50aWNhdGUoe1xuICAgICAgdGtuOiB0b2tlbixcbiAgICAgIGFpZDogV0xSLnBheW1lbnRfYWlkLFxuICAgICAgYW06ICBhbW91bnQsXG4gICAgICB0eDogIDAsXG4gICAgICBzZjogIDAsXG4gICAgICBlbTogICQoJ1tuYW1lPVwiZW1haWxcIl0nKS52YWwoKSxcbiAgICAgIHBuOiAgJCgnW25hbWU9XCJ0ZWxcIl0nKS52YWwoKVxuICAgIH0sIHNpZ251cF9wYXltZW50X3N1Ym1pdCk7XG4gIH0gZWxzZSB7XG4gICAgLy8g44OI44O844Kv44Oz55Sf5oiQ44Gr5aSx5pWX44GZ44KM44Gw44Ko44Op44O86KGo56S6XG4gICAgc2lnbnVwX3BheW1lbnRfZXJyb3IoZXJyb3IpO1xuICB9XG59XG5cbi8qXG4gKiDjgqvjg7zjg4nmg4XloLHjgYvjgonjg4jjg7zjgq/jg7PnlJ/miJDlvowg44OV44Kp44O844Og44KSc3VibWl0XG4gKi9cbmZ1bmN0aW9uIHNpZ251cF9wYXltZW50X3N1Ym1pdChyZXN1bHQsIGVycm9yKSB7XG4gIC8vIOaxuua4iOaIkOWKn+aZglxuICBpZiAocmVzdWx0ID09ICdTdWNjZXNzJykge1xuICAgIC8vIOODiOODvOOCr+ODs+S7peWkluOBruOCq+ODvOODieaDheWgseOCkuOCr+ODquOColxuICAgICQoJ1tuYW1lXj1cInBheW1lbnRfY3JlZGl0X1wiXTpub3QoW25hbWU9XCJwYXltZW50X2NyZWRpdF90b2tlblwiXSknKS52YWwoJycpO1xuICAgIC8vIOOCq+ODvOODieaDheWgseOBruW/hemgiOWxnuaAp+OCkuWkluOBl+OAgeODkOODquODh+ODvOOCt+ODp+ODs+OCkuWbnumBv1xuICAgICQoJ1tuYW1lXj1cInBheW1lbnRfY3JlZGl0X1wiXScpLnByb3AoJ3JlcXVpcmVkJywgZmFsc2UpO1xuICAgIC8vIOODleOCqeODvOODoOODh+ODvOOCv+mAgeS/oVxuICAgICQoJy5mb3JtX3dyYXBwZXIgZm9ybScpLnN1Ym1pdCgpO1xuICB9IGVsc2Uge1xuICAgIC8vIOaxuua4iOWkseaVl+aZglxuICAgIHNpZ251cF9wYXltZW50X2Vycm9yKGVycm9yKTtcbiAgfVxufVxuXG4vKlxuICog44OI44O844Kv44Oz55Sf5oiQ5aSx5pWX5pmCXG4gKi9cbmZ1bmN0aW9uIHNpZ251cF9wYXltZW50X2Vycm9yKGVycm9yKSB7XG4gIGNvbnN0IHRleHQgPSBg5rG65riI44Ko44Op44O844Gn44GZ44CC44Kr44O844OJ5oOF5aCx44KS44GU56K66KqN44GP44Gg44GV44GE44CCXFxu44Ko44Op44O844Kz44O844OJIDogJHtlcnJvci5jb2RlfWA7XG4gIGFsZXJ0KHRleHQpO1xufVxuIiwiKGZ1bmN0aW9uICgkKSB7XG4gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcblxuICAgIGlmICgkKCdib2R5JykuaGFzQ2xhc3MoJ3BhZ2Utc2lnbnVwJykpIHtcblxuICAgICAgJCgnI25leHRfcHJldmlldycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgJGlucHV0X2ZpZWxkcyAgID0gJCgnLnBsYW5fZmllbGRzLCAubWVtYmVyX2ZpZWxkcywgLnNoaXBwaW5nX2ZpZWxkcycpO1xuICAgICAgICBjb25zdCAkcHJldmlld19maWVsZHMgPSAkKCcucHJldmlld19wbGFuX2ZpZWxkcywgLnByZXZpZXdfb3B0aW9uX2ZpZWxkcywgLnByZXZpZXdfbWVtYmVyX2ZpZWxkcywgLnByZXZpZXdfc2hpcHBpbmdfZmllbGRzJyk7XG4gICAgICAgIGNvbnN0ICRwYXltZW50X3BsYW5zICA9ICQoJy5wYXltZW50X2NyZWRpdF9maWVsZHMsIC5wYXltZW50X2ludm9pY2VfZmllbGRzJykuZmluZCgndGRbZGF0YS1uYW1lPVwicGxhblwiXScpO1xuICAgICAgICAvLyDjg4bjgq3jgrnjg4jjg5XjgqPjg7zjg6vjg4ksIHRleHRhcmVhLCBzZWxlY3Qg44OX44Os44OT44Ol44O844KS55Sf5oiQXG4gICAgICAgICRpbnB1dF9maWVsZHMuZmluZCgnaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QnKS5lYWNoKGZ1bmN0aW9uIChpLCBlbCkge1xuICAgICAgICAgIGNvbnN0IGVsX3R5cGUgPSAkKGVsKS5wcm9wKCdub2RlTmFtZScpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgY29uc3QgdHlwZSAgICA9ICQoZWwpLmF0dHIoJ3R5cGUnKTtcbiAgICAgICAgICBjb25zdCBuYW1lICAgID0gJChlbCkuYXR0cignbmFtZScpO1xuICAgICAgICAgIGlmIChbJ3JhZGlvJywgJ2NoZWNrYm94J10uaW5jbHVkZXModHlwZSkgfHwgKG5hbWUgPT0gJ3Bhc3N3b3JkJykpIHtcbiAgICAgICAgICAgI
846HJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSAoZWxfdHlwZSA9PSAnc2VsZWN0JykgPyAkKGVsKS5maW5kKCdvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCkgOiAkKGVsKS52YWwoKTtcbiAgICAgICAgICAkcHJldmlld19maWVsZHMuZmluZChgdGRbZGF0YS1uYW1lPVwiJHtuYW1lfVwiXWApLmF0dHIoJ2RhdGEtdmFsdWUnLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyByYWRpbywgY2hlY2tib3ggIOODl+ODrOODk+ODpeODvOOCkua2iOWOu1xuICAgICAgICAkaW5wdXRfZmllbGRzLmZpbmQoJ1t0eXBlPVwicmFkaW9cIl0sIFt0eXBlPVwiY2hlY2tib3hcIl0nKS5lYWNoKGZ1bmN0aW9uIChpLCBlbCkge1xuICAgICAgICAgIGNvbnN0IG5hbWUgPSAkKGVsKS5hdHRyKCduYW1lJyk7XG4gICAgICAgICAgJHByZXZpZXdfZmllbGRzLmZpbmQoYHRkW2RhdGEtbmFtZT1cIiR7bmFtZX1cIl1gKS5hdHRyKCdkYXRhLXZhbHVlJywgJycpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gcmFkaW8g44OX44Os44OT44Ol44O844KS55Sf5oiQXG4gICAgICAgICRpbnB1dF9maWVsZHMuZmluZCgnW3R5cGU9XCJyYWRpb1wiXTpjaGVja2VkJykuZWFjaChmdW5jdGlvbiAoaSwgZWwpIHtcbiAgICAgICAgICBjb25zdCBuYW1lICA9ICQoZWwpLmF0dHIoJ25hbWUnKTtcbiAgICAgICAgICBjb25zdCBpZCAgICA9ICQoZWwpLmF0dHIoJ2lkJyk7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAkKGBsYWJlbFtmb3I9XCIke2lkfVwiXWApLnRleHQoKTtcbiAgICAgICAgICAkcHJldmlld19maWVsZHMuZmluZChgdGRbZGF0YS1uYW1lPVwiJHtuYW1lfVwiXWApLmF0dHIoJ2RhdGEtdmFsdWUnLCBsYWJlbCk7XG4gICAgICAgICAgaWYgKG5hbWUgPT0gJ3BsYW4nKSB7XG4gICAgICAgICAgICAkcGF5bWVudF9wbGFucy5hdHRyKCdkYXRhLXZhbHVlJywgbGFiZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNoZWNrYm94IOODl+ODrOODk+ODpeODvOOCkueUn+aIkFxuICAgICAgICBjb25zdCBjaGVja2JveF92YWx1ZXMgPSB7fTtcbiAgICAgICAgJGlucHV0X2ZpZWxkcy5maW5kKCdbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQnKS5lYWNoKGZ1bmN0aW9uIChpLCBlbCkge1xuICAgICAgICAgIGxldCAgIG5hbWUgID0gJChlbCkuYXR0cignbmFtZScpO1xuICAgICAgICAgIGNvbnN0IGlkICAgID0gJChlbCkuYXR0cignaWQnKTtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9ICQoYGxhYmVsW2Zvcj1cIiR7aWR9XCJdYCkudGV4dCgpO1xuICAgICAgICAgIGlmIChuYW1lID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgnW10nLCAnJyk7XG4gICAgICAgICAgaWYgKGNoZWNrYm94X3ZhbHVlc1tgJHtuYW1lfWBdID09IG51bGwpIHtcbiAgICAgICAgICAgIGNoZWNrYm94X3ZhbHVlc1tgJHtuYW1lfWBdID0gW107XG4gICAgICAgICAgfVxuICAgICAgICAgIGNoZWNrYm94X3ZhbHVlc1tgJHtuYW1lfWBdLnB1c2gobGFiZWwpO1xuICAgICAgICB9KTtcbiAgICAgICAgbG9kYXNoLmZvckVhY2goY2hlY2tib3hfdmFsdWVzLCBmdW5jdGlvbih2YWx1ZXMsIG5hbWUpIHtcbiAgICAgICAgICBjb25zdCBsYWJlbHMgPSB2YWx1ZXMuam9pbignLCAnKTtcbiAgICAgICAgICAkcHJldmlld19maWVsZHMuZmluZChgdGRbZGF0YS1uYW1lPVwiJHtuYW1lfVwiXWApLmF0dHIoJ2RhdGEtdmFsdWUnLCBsYWJlbHMpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8g44GK5bGK44GR5YWI5oOF5aCxXG4gICAgICAgIGNvbnN0IHN5bmMgPSAkKCcjc3luY19zaGlwcGluZ19maWVsZHMnKS5wcm9wKCdjaGVja2VkJyk7XG4gICAgICAgIGNvbnN0ICRzX3RhYmxlID0gJCgnLnByZXZpZXdfc2hpcHBpbmdfZmllbGRzX3RhYmxlJyk7XG4gICAgICAgICQoJyNwcmV2aWV3X3N5bmNfc2hpcHBpbmdfZmllbGRzJykucHJvcCgnY2hlY2tlZCcsIHN5bmMpO1xuICAgICAgICBpZiAoc3luYykge1xuICAgICAgICAgICRzX3RhYmxlLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAkc190YWJsZS5hZGRDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgfVxuXG4gIH0pO1xufSkoalF1ZXJ5KTtcbiIsIihmdW5jdGlvbiAoJCkge1xuICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG5cbiAgICBpZiAoJCgnYm9keScpLmlzKCcucGFnZS1zaWdudXAsIC5wYWdlLXBheW1lbnQsIC5wYWdlLW15cGFnZScpKSB7XG5cbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gJ2lucHV0LCB0ZXh0YXJlYSwgc2VsZWN0JztcblxuICAgICAgLyoqXG4gICAgICAgKiDlsZ7mgKfjgpLov73liqBcbiAgICAgICAqL1xuICAgICAgJCgnLmZvcm1fd3JhcHBlcicpLmZpbmQoZWxlbWVudHMpLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7XG4gICAgICAgICQoZWwpLmF0dHIoJ2RhdGEtcGFyc2xleS10cmlnZ2VyJywgJ2JsdXIgZm9jdXNvdXQgY2hhbmdlJyk7XG4gICAgICB9KTtcbiAgICAgICQoJy5wbGFuX2ZpZWxkcycpLmZpbmQoZWxlbWVudHMpLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7XG4gICAgICAgICQoZWwpLmF0dHIoJ2RhdGEtcGFyc2xleS1ncm91cCcsICdwbGFuJyk7XG4gICAgICB9KTtcbiAgICAgICQoJy5tZW1iZXJfc2hpcHBpbmdfZmllbGRzJykuZmluZChlbGVtZW50cykuZWFjaChmdW5jdGlvbiAoaSwgZWwpIHtcbiAgICAgICAgJChlbCkuYXR0cignZGF0YS1wYXJzbGV5LWdyb3VwJywgJ21lbWJlcicpO1xuICAgICAgfSk7XG4gICAgICAkKCcucGF5bWVudF9maWVsZHMsIC5wYXltZW50X2NyZWRpdF9maWVsZHMnKS5maW5kKGVsZW1lbnRzKS5lYWNoKGZ1bmN0aW9uIChpLCBlbCkge1xuICAgICAgICAkKGVsKS5hdHRyKCdkYXRhLXBhcnNsZXktZ3JvdXAnLCAncGF5bWVudCcpO1xuICAgICAgfSk7XG5cbiAgICAgIC8qKlxuICAgICAgICog44Ko44Op44O86KGo56S6XG4gICAgICAgKiBAcGFyYW0gYm9vbGVhbiBzY3JvbGxcbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gdmFsaWRhdGlvbl9zaG93X2Vycm9yKHNjcm9sbCkge1xuICAgICAgICAkKCcucGFyc2xleS1lcnJvcnMtbGlzdCcpLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7XG4gICAgICAgICAgJChlbCkuY2xvc2VzdCgndHInKS5maW5kKCd0aCcpLmFwcGVuZCgkKGVsKSk7XG4gICAgICAgI
846H0pO1xuICAgICAgICAkKCcuZm9ybV93cmFwcGVyIHRoJykuZWFjaChmdW5jdGlvbiAoaSwgZWwpIHtcbiAgICAgICAgICBjb25zdCBsaXN0X2xlbiA9ICQoZWwpLmZpbmQoJy5wYXJzbGV5LWVycm9ycy1saXN0JykubGVuZ3RoO1xuICAgICAgICAgIGlmIChsaXN0X2xlbiA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RfZmlyc3QgPSAkKGVsKS5maW5kKCcucGFyc2xleS1lcnJvcnMtbGlzdDplcSgwKScpO1xuICAgICAgICAgICAgY29uc3QgbGlzdF9ub3RfZmlyc3QgPSAkKGVsKS5maW5kKCcucGFyc2xleS1lcnJvcnMtbGlzdDpub3QoOmVxKDApKScpO1xuICAgICAgICAgICAgY29uc3QgbGlzdF9pdGVtcyA9ICQoZWwpLmZpbmQoJy5wYXJzbGV5LWVycm9ycy1saXN0IGxpJyk7XG4gICAgICAgICAgICBsaXN0X2ZpcnN0LnByZXBlbmQobGlzdF9pdGVtcyk7XG4gICAgICAgICAgICBsaXN0X25vdF9maXJzdC5yZW1vdmUoKTtcbiAgICAgICAgICAgIGxpc3RfZmlyc3QuaHRtbChcbiAgICAgICAgICAgICAgbG9kYXNoLnVuaXFCeShsaXN0X2l0ZW1zLnRvQXJyYXkoKSwgZSA9PiBlLmlubmVyVGV4dClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHNjcm9sbCkge1xuICAgICAgICAgIGNvbnN0IG9mZnNldCA9ICQoJy5wYXJzbGV5LWVycm9ycy1saXN0W2FyaWEtaGlkZGVuPVwiZmFsc2VcIl06ZXEoMCknKS5vZmZzZXQoKS50b3AgLSA1MDtcbiAgICAgICAgICAkKCdodG1sLCBib2R5JykuYW5pbWF0ZSh7c2Nyb2xsVG9wOiBvZmZzZXR9LCAyMDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICog44OQ44Oq44OH44O844K344On44OzXG4gICAgICAgKi9cbiAgICAgIHZhciB2YWxpZGF0aW9uO1xuICAgICAgJCgnLmZvcm1fd3JhcHBlciBmb3JtJykuZWFjaChmdW5jdGlvbiAoaSwgZWwpIHtcbiAgICAgICAgY29uc3QgJGZvcm0gPSAkKGVsKTtcbiAgICAgICAgaWYgKCRmb3JtLmNsb3Nlc3QoJyNzd2l0Y2hfY3VzdG9tZXInKS5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFsaWRhdGlvbiA9ICRmb3JtLnBhcnNsZXkoKTtcbiAgICAgICAgdmFsaWRhdGlvbi5vbignZmllbGQ6dmFsaWRhdGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICghdmFsaWRhdGlvbi5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25fc2hvd19lcnJvcihmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICAvKipcbiAgICAgICAqIOODnOOCv+ODsyDjgq/jg6rjg4Pjgq/mmYJcbiAgICAgICAqIOODl+ODqeODs+OBrumBuOaKniDihpIg44GK5a6i5qeY5oOF5aCx44Gu5YWl5YqbXG4gICAgICAgKi9cbiAgICAgICQoJyNuZXh0X21lbWJlcicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFsaWRhdGlvbi52YWxpZGF0ZSh7Z3JvdXA6ICdwbGFuJ30pO1xuICAgICAgICBpZiAodmFsaWRhdGlvbi5pc1ZhbGlkKHtncm91cDogJ3BsYW4nfSkpIHtcbiAgICAgICAgICBpZiAodmFsaWRhdGVfcGxhbl9ib29rc19jb3VudCgpKSB7XG4gICAgICAgICAgICBzd2l0Y2hfc2lnbnVwX3N0ZXAoJ21lbWJlcicpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzd2l0Y2hfc2lnbnVwX3N0ZXAoJ3BsYW4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsaWRhdGlvbl9zaG93X2Vycm9yKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLyoqXG4gICAgICAgKiDjg5zjgr/jg7Mg44Kv44Oq44OD44Kv5pmCXG4gICAgICAgKiDjgYrlrqLmp5jmg4XloLHjga7lhaXlipsg4oaSIOOBiueUs+OBl+i+vOOBv+WGheWuueOBrueiuuiqjVxuICAgICAgICovXG4gICAgICAkKCcjbmV4dF9wcmV2aWV3Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YWxpZGF0aW9uLnZhbGlkYXRlKHtncm91cDogJ21lbWJlcid9KTtcbiAgICAgICAgaWYgKHZhbGlkYXRpb24uaXNWYWxpZCh7Z3JvdXA6ICdtZW1iZXInfSkpIHtcbiAgICAgICAgICBpZiAodmFsaWRhdGVfcGxhbl9ib29rc19jb3VudCgpKSB7XG4gICAgICAgICAgICBzd2l0Y2hfc2lnbnVwX3N0ZXAoJ3ByZXZpZXcnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3dpdGNoX3NpZ251cF9zdGVwKCdwbGFuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbGlkYXRpb25fc2hvd19lcnJvcih0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8qKlxuICAgICAgICog44Kv44Os44K444OD44OI44Kr44O844OJ5rG65riIIOeUs+i+vOODnOOCv+ODs+OBruOCr+ODquODg+OCr+aZglxuICAgICAgICog44OQ44Oq44OH44O844K344On44OzXG4gICAgICAgKi9cbiAgICAgICQoJyNmb3JtX3N1Ym1pdCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB2YWxpZGF0aW9uLnZhbGlkYXRlKHtncm91cDogJ3BheW1lbnQnfSk7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uLmlzVmFsaWQoe2dyb3VwOiAncGF5bWVudCd9KSkge1xuICAgICAgICAgIC8vIOOCr+ODrOOCuOODg+ODiOaxuua4iOOBp+OBguOCjOOBsOODiOODvOOCr+ODs+eUn+aIkOetieOCkuWun+ihjFxuICAgICAgICAgIGlmICgkKCdbbmFtZT1cInBheW1lbnRfdHlwZVwiXTpjaGVja2VkJykudmFsKCkgPT0gJ2NyZWRpdCcpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAvLyDjgqvjg7zjg4nlkI3nvqkg5paH5a2X5pWw44OQ44Oq44OH44O844K344On44OzXG4gICAgICAgICAgICBjb25zdCBmbiA9ICQoJ1tuYW1lPVwicGF5bWVudF9jcmVkaXRfZmlyc3RfbmFtZVwiXScpLnZhbCgpO1xuICAgICAgICAgICAgY29uc3QgbG4gPSAkKCdbbmFtZT1cInBheW1lbnRfY3JlZGl0X2xhc3RfbmFtZVwiXScpLnZhbCgpO1xuICAgICAgICAgICAgY29uc3QgbmFtZV9sZW4gPSAoMCArIGZuLmxlbmd0aCArIGxuLmxlbmd0aCk7XG4gICAgICAgICAgICBpZiAobmFtZV9sZW4gPiA0NCkge1xuICAgICAgICAgICAgICBhbGVydCgn44GK5ZCN5YmN44Gv5ZCI6KiINDTmloflrZfku6XlhoXjgaflhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIInKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2lnbnVwX3BheW1lbnRfY3JlYXRlX3Rva2VuKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICQoJy5mb3JtX3dyYXBwZXIgZm9ybScpLnN1Ym1pdCgpO1xuICAgICAgICAgI
846H1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWxpZGF0aW9uX3Nob3dfZXJyb3IodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgfVxuXG4gIH0pO1xufSkoalF1ZXJ5KTtcbiIsImZ1bmN0aW9uIHN3aXRjaF9zaWdudXBfc3RlcChzdGVwKSB7XG4gIC8vIGJvZHksIGZpZWxkc1xuICBjb25zdCBzdGVwX2NsYXNzZXMgPSAnc3RlcC1wbGFuIHN0ZXAtbWVtYmVyIHN0ZXAtcHJldmlldyBzdGVwLXBheW1lbnQgc3RlcC1jb21wbGV0ZSc7XG4gICQoJ2JvZHknKS5yZW1vdmVDbGFzcyhzdGVwX2NsYXNzZXMpO1xuICAkKCdib2R5JykuYWRkQ2xhc3MoYHN0ZXAtJHtzdGVwfWApO1xuICBjb25zdCBzY3JvbGxfcG9zaXRpb24gPSAoc3RlcCA9PSAnbWVtYmVyJylcbiAgICA/ICgkKCcjbmV4dF9tZW1iZXInKS5vZmZzZXQoKS50b3AgLSAyMCkgOiAwO1xuICAkKCdodG1sLCBib2R5JykuYW5pbWF0ZSh7c2Nyb2xsVG9wOiBzY3JvbGxfcG9zaXRpb259LCAwKTtcbiAgLy8gbmF2XG4gICQoJy5zaWdudXBfc3RlcHMgLnN0ZXAnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gIGNvbnN0IG5hdl9zdGVwID0gKHN0ZXAgPT0gJ21lbWJlcicpID8gJ3BsYW4nIDogc3RlcDtcbiAgJChgLnNpZ251cF9zdGVwcyAuc3RlcC0ke25hdl9zdGVwfWApLmFkZENsYXNzKCdhY3RpdmUnKTtcbn1cblxuKGZ1bmN0aW9uICgkKSB7XG4gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcblxuICAgIGlmICgkKCdib2R5JykuaGFzQ2xhc3MoJ3BhZ2Utc2lnbnVwJykpIHtcblxuICAgICAgY29uc3QgaW5wdXRfZXZlbnRzID0gJ2ZvY3VzIGtleXVwIHBhc3RlIGNoYW5nZSBibHVyJztcblxuICAgICAgLy8g44OV44Kp44O844Og6KGo56S65YiH5pu/XG4gICAgICAkKCdib2R5JykuYWRkQ2xhc3MoJ3N0ZXAtcGxhbicpO1xuICAgICAgJCgnLmZvcm1fYnV0dG9ucyBidXR0b24nKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ0bl9pZCA9ICQodGhpcykuYXR0cignaWQnKTtcbiAgICAgICAgaWYgKGJ0bl9pZCA9PSAnYmFja19wbGFuJykge1xuICAgICAgICAgIHN3aXRjaF9zaWdudXBfc3RlcCgncGxhbicpO1xuICAgICAgICB9IGVsc2UgaWYgKGJ0bl9pZCA9PSAnYmFja19wcmV2aWV3Jykge1xuICAgICAgICAgIHN3aXRjaF9zaWdudXBfc3RlcCgncHJldmlldycpO1xuICAgICAgICB9IGVsc2UgaWYgKGJ0bl9pZCA9PSAnbmV4dF9wYXltZW50Jykge1xuICAgICAgICAgIHN3aXRjaF9zaWdudXBfc3RlcCgncGF5bWVudCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIOOBiuWxiuOBkeWFiOaDheWgsSDooajnpLrliIfmm79cbiAgICAgIGNvbnN0ICRzeW5jID0gJCgnI3N5bmNfc2hpcHBpbmdfZmllbGRzJyk7XG4gICAgICAkc3luYy5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0ICR0YWJsZSA9ICQoJy5zaGlwcGluZ19maWVsZHNfdGFibGUnKTtcbiAgICAgICAgaWYgKCQodGhpcykucHJvcCgnY2hlY2tlZCcpKSB7XG4gICAgICAgICAgJHRhYmxlLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAkdGFibGUuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIOOBiuWxiuOBkeWFiOaDheWgsSDlhaXlipvlhoXlrrnjgpLlkIzmnJ9cbiAgICAgIGNvbnN0IHN5bmNfZmllbGRzID0gKCkgPT4ge1xuICAgICAgICAkKCcubWVtYmVyX2ZpZWxkcyBpbnB1dCcpLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7XG4gICAgICAgICAgY29uc3QgJG0gPSAkKHRoaXMpO1xuICAgICAgICAgIGNvbnN0IG1fa2V5ID0gJG0uYXR0cignbmFtZScpO1xuICAgICAgICAgIGNvbnN0IG1fdmFsID0gJG0udmFsKCk7XG4gICAgICAgICAgY29uc3QgJHMgPSAkKGBpbnB1dFtuYW1lPVwic2hpcHBpbmdfJHttX2tleX1cIl1gKTtcbiAgICAgICAgICBpZiAoJHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAkcy52YWwobV92YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgJCgnLm1lbWJlcl9maWVsZHMgaW5wdXQnKS5hZGQoJHN5bmMpLm9uKGlucHV0X2V2ZW50cywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoJHN5bmMucHJvcCgnY2hlY2tlZCcpKSB7XG4gICAgICAgICAgc3luY19maWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyDlrprkvJHml6Xjg4Hjgqfjg4Pjgq/jg5zjg4Pjgq/jgrlcbiAgICAgICQoJ1tuYW1lPVwiaG9saWRheXNbXVwiXScpLm9uKCdjbGljayBjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0ICRjbGlja2VkID0gJCh0aGlzKTtcbiAgICAgICAgY29uc3QgY2xpY2tfY2hlY2tlZCA9ICRjbGlja2VkLnByb3AoJ2NoZWNrZWQnKVxuICAgICAgICAgID8gJGNsaWNrZWQudmFsKCkgOiBudWxsO1xuICAgICAgICBjb25zdCB3ZWVrZGF5cyA9IFsnbW9uJywgJ3R1ZScsICd3ZWQnLCAndGh1JywgJ2ZyaSddO1xuICAgICAgICBsZXQgaG9saWRheXMgICAgICAgICA9IFtdO1xuICAgICAgICBsZXQgd2Vla2RheV9ob2xpZGF5cyA9IFtdO1xuICAgICAgICAkKCdbbmFtZT1cImhvbGlkYXlzW11cIl06Y2hlY2tlZCcpLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7XG4gICAgICAgICAgY29uc3QgdmFsID0gJChlbCkudmFsKCk7XG4gICAgICAgICAgaG9saWRheXMucHVzaCh2YWwpO1xuICAgICAgICAgIGlmICh3ZWVrZGF5cy5pbmNsdWRlcyh2YWwpKSB7XG4gICAgICAgICAgICB3ZWVrZGF5X2hvbGlkYXlzLnB1c2godmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaG9saWRheXMuaW5jbHVkZXMoJ25vbmUnKSkge1xuICAgICAgICAgIGlmIChjbGlja19jaGVja2VkID09ICdub25lJykge1xuICAgICAgICAgICAgLy8gXCLlrprkvJHml6XjgarjgZdcIiDjga7jgajjgY3jgIHlhajmm5zml6Xjga7jg4Hjgqfjg4Pjgq/lpJbjgZlcbiAgICAgICAgICAgICQoJ1tuYW1lPVwiaG9saWRheXNbXVwiXTpub3QoW3ZhbHVlPVwibm9uZVwiXSknKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuICAgICAgICAgI
846H0gZWxzZSB7XG4gICAgICAgICAgICAvLyDmm5zml6Xjgavjg4Hjgqfjg4Pjgq/jgYLjgozjgbAgXCLlrprkvJHml6XjgarjgZdcIiDjga7jg4Hjgqfjg4Pjgq/lpJbjgZlcbiAgICAgICAgICAgICQoJ1tuYW1lPVwiaG9saWRheXNbXVwiXVt2YWx1ZT1cIm5vbmVcIl0nKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod2Vla2RheV9ob2xpZGF5cy5sZW5ndGggPj0gNSkge1xuICAgICAgICAgIC8vIOWFqOabnOaXpeODgeOCp+ODg+OCr+OBr+S4jeWPr+OBq+OBmeOCi1xuICAgICAgICAgICRjbGlja2VkLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG4gICAgICAgICAgYWxlcnQoJ+W5s+aXpeOBmeOBueOBpuOCkuWumuS8keaXpeOBq+OBr+OBp+OBjeOBvuOBm+OCk+OAgicpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIH1cblxuICB9KTtcbn0pKGpRdWVyeSk7XG4iXX0=
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.